2013-04-15 16 views
8

Sto utilizzando gcc su GNU/Linux e sono installati i file di debug e le intestazioni di libc e libstd ++. Ma non so come dire a gdb di usarne il codice sorgente, specialmente per eseguire il debug in libstd ++. Il codice sorgente di libstdC++ stesso sembra essere fornito in una struttura complicata. Penso che il comando directory sia la scelta giusta. Sto usando qui Debian/Ubuntu e scaricato la fonte con apt-get source libstdC++ 6 nella mia home-directory.Debug tramite libstdC++

Sono abbastanza sicuro di non aver bisogno di fare passi speciali per questo con Fedora (alcuni anni fa). Forse Fedora è stata preparata in un modo speciale per questo. Quindi sarò lieto delle istruzioni generali, che si adattano ad ogni distribuzione.

Grazie

Aggiornamento
ho capito, che ho bisogno di compilare con -D_GLIBCXX_DEBUG oltre a -g, quindi compilare comando assomiglia $ g++ -o test test.cpp -g -D_GLIBCXX_DEBUG.

Inoltre ho avuto avviso di perdere belle stampanti, che ho risolto come descritto qui: http://gcc.gnu.org/onlinedocs/libstdc++/manual/debug.html#debug.gdb

ora posso eseguire il debug in libstdC++, ma ho sempre avuto questo messaggio:

Breakpoint 1, main() at test.cpp:9 
9  string str = "str"; 
(gdb) s 
std::allocator<char>::allocator (this=0x7fffffffe1e0) 
    at /build/buildd/gcc-4.7-4.7.2/build/x86_64-linux-gnu/libstdc++-v3/include/bits/allocator.h:104 
104 /build/buildd/gcc-4.7-4.7.2/build/x86_64-linux-gnu/libstdc++-v3/include/bits/allocator.h: No such file or directory. 
(gdb) s 
std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string (
    this=0x7fffffffe1c0, __s=0x402930 "str", __a=...) 
    at /usr/include/c++/4.7/bits/basic_string.tcc:217 
217     __s + npos, __a), __a) 

I non è necessario impostare la directory in gdb sulla mia origine scaricata (penso di cercare nella mia home directory). Quindi ho pensato di aver bisogno di un comando diverso per risolvere questo problema e ho trovato "set sostitutivo-path" e lo ho indirizzato a /home/username/gcc-4.7-4.7.2/gcc-4.7.2/libstdc++-v3 ma non lo faccio lavorare Perché gdb cerca allocator.h nel posto sbagliato?

+0

Qual è il tuo esatto comando "imposta sostituto-percorso"? –

risposta

Problemi correlati