将Ruby嵌入C中是Ruby编程中很少记录的部分。当我从C代码调用Ruby并且我在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中使用gem。当我在经典的Ruby形式require name_of_gem
中使用它时,找不到gem。当我使用绝对路径到一个文件gem时它可以,但是当gem由更多文件组成时,我无法使用它。