Встраивание Ruby в C - плохо документированная часть программирования на Ruby. Когда я вызываю Ruby из кода C и делаю что-то не так на стороне Ruby, я получаю ошибку в этой форме:
<dummy toplevel>:17: [BUG] Segmentation fault
ruby 1.9.0 (2008-10-04 revision 19669) [i486-linux]
-- control frame ----------
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 CFUNC :require
c:0001 p:0000 s:0002 b:0002 l:000001 d:000001 TOP <dummy toplevel>:17
---------------------------
DBG> : ":0:in `require'"
-- backtrace of native function call (Use addr2line) --
0x231316
0x1515e7
0x15166a
0x1da144
0x8e6410
0x3ca46c
0x1530da
0x153473
0x15009b
0x156127
0x1566c6
0x21ef73
0x22b56a
0x22c4a5
0x80540fb
0x80544ee
0x3b6bd6
0x8049721
-------------------------------------------------------
Мой первый вопрос: возможно ли получить более сложное сообщение об ошибке? Что означает Use addr2line
? Или как найти из этой трассировки стека, где моя ошибка?
Второй вопрос касается использования драгоценных камней во встроенном Ruby. Когда я использую его в классической форме Ruby require name_of_gem
, камень не найден. Когда я использую абсолютный путь к одному файлу gem, это нормально, но когда gem состоит из нескольких файлов, я не смог его использовать.