如何让rbenv继续调试符号?

Doc*_*awk 7 ruby gdb valgrind rbenv dsym

rbenv在Mac OS X v10.8.3上安装了Ruby 2的开发版本,并使用它来编译我正在处理的gem.我有一个内存问题我想调试.不幸的是,无论何时我运行valgrind,gdb或者cgdb在a的上下文中rake spec,我都会遇到一堆像这样的错误:

warning: Could not find object file "/private/var/folders/5f/h1s00nhn0rv4ckkpg4k_bwhr0000gn/T/ruby-build.20130331232604.54521/ruby-2.0.0-dev/main.o" - no debug information available for "main.c".
Run Code Online (Sandbox Code Playgroud)

显然,该ruby-build目录不再存在.

我收到了一系列可能相关的错误valgrind.以下是示例:

--2564-- /Users/jwoods/.rbenv/versions/2.0.0-dev/lib/libyaml-0.2.dylib:
--2564-- dSYM directory is missing; consider using --dsymutil=yes
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用该--dsymutil=yes选项,我会收到与以下错误基本相同的错误gdb:

warning: (x86_64) /private/var/folders/5f/h1s00nhn0rv4ckkpg4k_bwhr0000gn/T/ruby-build.20130331232604.54521/ruby-2.0.0-dev/ext/openssl/ossl_bn.o unable to open object file
Run Code Online (Sandbox Code Playgroud)

根据另一个问题的答案,我试着在info target里面跑gdb.这是输出.

有什么方法可以指示rbenv将调试符号放在某些不会被清理的地方吗?

我正在使用GCC 4.7.1,我通过自制软件安装.我确切的Ruby版本字符串是ruby 2.1.0dev (2013-04-01 trunk 40029) [x86_64-darwin12.3.0],我的rbenv版本是0.4.0.

Dav*_*ser 3

根据ruby​​-build的文档:

ruby-build 和 rbenv install 都接受 -k 或 --keep 标志,这告诉 ruby​​-build 在安装后保留下载的源代码。如果您需要将 gdb 和 memprof 与 Ruby 结合使用,这会很有用。

所以尝试一下ruby-build install X -k,其中 X 是版本号。