7

我在 Mac OS X v10.8.3 上安装了 Ruby 2 的开发版本rbenv,并使用它来编译我正在研究的 gem。我有一个要调试的内存问题。不幸的是,每当我运行valgrind,gdbcgdb在 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".

显然,那个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

如果我尝试使用该--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

根据另一个问题的答案,我试着在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。

4

1 回答 1

3

根据ruby​​-build的文档:

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

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

于 2014-10-20T21:44:19.353 回答