Ruby 使用

Ruby 使用,ruby,rubygems,gem,Ruby,Rubygems,Gem,在C中嵌入Ruby是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

在C中嵌入Ruby是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
-------------------------------------------------------
:17:[BUG]分段错误
ruby 1.9.0(2008-10-04修订版19669)[i486 linux]
--控制框架----------
c:0002 p:----s:0004 b:0004 l:000003 d:000003 CFUNC:需要
c:0001 p:0000 s:0002 b:0002 l:000001 d:000001顶部:17
---------------------------
DBG>:“:0:在'require'中”
--本机函数调用的回溯(使用addr2line)--
0x231316
0x1515e7
0x15166a
0x1da144
0x8e6410
0x3ca46c
0x1530da
0x153473
0x15009b
0x156127
0x1566c6
0x21ef73
0x22b56a
0x22c4a5
0x80540fb
0x80544ee
0x3b6bd6
0x8049721
-------------------------------------------------------
我的第一个问题是,是否有可能获得更复杂的错误消息?
使用addr2line
是什么意思?或者如何从堆栈跟踪中找到错误所在


第二个问题是关于在嵌入式Ruby中使用gems。当我在经典Ruby表单中使用它时,
require name\u of\u gem
找不到gem。当我使用一个文件gem的绝对路径时,它是可以的,但当gem由更多文件组成时,我无法使用它。

addr2line
是一个将地址映射到文件/行的实用程序(当有调试信息时)。如何使用它进行调试?我读到了有人描述的地方:您可以通过以下命令查看调试信息
addr2line-e[您的ruby二进制文件]
。但是Ruby binary是什么意思呢?但它为我指出了两种方法的结尾。而且没有显示任何错误…$addr2line-e./Debug/traffic\u profiller