2013-05-07 33 views
7

Zainstalowałem wersję rozwojową Ruby 2 przez rbenv na Mac OS X 10.8.3 i używam jej do kompilacji klejnotu, nad którym pracuję. Mam problem z pamięcią, którą chcę debugować. Niestety, gdy biegnę valgrind, gdb lub cgdb w kontekście rake spec, otrzymuję whole bunch of errors jak ten:Jak uzyskać rbenv, aby zachować symbole debugowania?

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". 

Oczywiście, że ruby-build katalog już nie istnieje.

Otrzymuję series of likely-related errors od valgrind. Oto przykłady:

--2564-- /Users/jwoods/.rbenv/versions/2.0.0-dev/lib/libyaml-0.2.dylib: 
--2564-- dSYM directory is missing; consider using --dsymutil=yes 

Gdy próbuję użyć tego --dsymutil=yes opcja, pojawiają się błędy, które są w zasadzie takie same jak te z 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 

Za odpowiedź na inne pytanie, próbowałem działa info target wewnątrz gdb. Here is the output.

Czy jest jakiś sposób, abym mógł nakazać rbenv umieścić symbole debugowania w miejscu, w którym nie zostaną wyczyszczone?

Używam GCC 4.7.1, który zainstalowałem przez homebrew. Mój dokładny ciąg w Ruby to ruby 2.1.0dev (2013-04-01 trunk 40029) [x86_64-darwin12.3.0], a moja wersja rbenv to 0.4.0.

+0

Proszę przenieść błędy i wyjście GDB na swoje pytanie. Łącza stają się nieaktualne i/lub zerwane z powodu zgnilizny łącza. Gdy to się stanie, twoje pytanie będzie nie do użytku dla osób, które chcą uzyskać odpowiedzi na ten sam problem. Poza tym, umieszczając twoje informacje poza domem, zmuszasz tych, którzy mogą chcieć pomóc w ich ściganiu, co marnuje ich czas. Pomóż nam pomóc, umieszczając tu informacje. –

+0

Czy kiedykolwiek znalazłeś rozwiązanie tego problemu? Mam dokładnie to samo pytanie, szczegóły zawarte. –

+0

Rodzaj, chociaż nie próbowałem zastosować go do 'rbenv'. Przypuszczam, że podczas kompilacji rbenv i Ruby musisz uruchomić 'dsymutil' na wynikowych plikach binarnych. To jedyny sposób, w jaki dostałem Maca, aby zachować symbole debugowania. –

Odpowiedz

1

Według dokumentacji ruby-build:

Zarówno Ruby-build i rbenv zainstalować zaakceptować -k lub --keep flagę, która mówi ruby-build zachować pobraną źródło po instalacji. Może to być przydatne, jeśli musisz używać gdb i memprof z Ruby.

Więc spróbuj ruby-build install X -k, gdzie X to numer wersji.