2013-05-07 80 views
7

我通過rbenv安裝在Mac OS X v10.8.3紅寶石2的開發版本,並用它來編譯寶石我的工作我。我有一個我想調試的內存問題。不幸的是,每當我在rake spec的上下文中運行valgrindgdb,或cgdb,我得到一個whole bunch of errors像這樣的:如何讓rbenv繼續調試符號?

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一個series of likely-related errors。下面舉例說明:

--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裏面gdbHere is the output.

有什麼方法可以指導rbenv將調試符號放在某個不會被清理的地方?

我使用GCC 4.7.1,這是我通過自制安裝。我確切的Ruby版本字符串是ruby 2.1.0dev (2013-04-01 trunk 40029) [x86_64-darwin12.3.0],我rbenv版本是0.4.0。

+0

請將錯誤和gdb輸出到你的問題。鏈接由於鏈接腐爛而變得陳舊和/或中斷。一旦發生這種情況,您的問題將無法用於尋求解決同一問題的人。此外,通過將您的信息置於場外,您可能會迫使那些想要幫助追查的人,這會浪費他們的時間。幫助我們通過將信息放在這裏來幫助您。 – 2014-08-14 19:38:24

+0

你有沒有找到解決這個問題的方法?我有完全相同的問題,包括細節。 – 2014-09-12 19:17:05

+0

排序的,雖然我還沒有嘗試過將它應用到'rbenv'。我想當你編譯rbenv和Ruby時,你必須在生成的二進制文件上真正運行'dsymutil'。這是我獲得Mac保留我的調試符號的唯一方法。 – 2014-09-12 19:28:45

回答

1

據爲ruby-build的文檔:

兩個紅寶石構建和rbenv安裝接受-k或--keep標誌,它告訴紅寶石建造,以保持源下載安裝後。如果你需要在Ruby中使用gdb和memprof,這會很有用。

因此請嘗試ruby-build install X -k,其中X是版本號。