in Linux e Mac OS X Posso usare stepi e nexti per eseguire il debug di un'applicazione senza eseguire il debug delle informazioni.Debug delle librerie smontate con gdb
Su Mac OS X gdb mostra le funzioni chiamate all'interno della libreria, sebbene a volte avanzino diverse istruzioni assembler in ciascuna istruzione stepi.
Su Linux, quando passo in una libreria dinamica gdb si perde. Per esempio, con puts() ci sono tre istruzioni assembler all'interno di puts(), una volta che gdb raggiunge il salto a 0x080482bf, fallisce con il messaggio "Nessuna funzione contiene il contatore di programma per il frame selezionato".
0x080482ba in [email protected]()
(gdb) disassemble
Dump of assembler code for function [email protected]:
0x080482b4 <[email protected]+0>: jmp *0x8049580
0x080482ba <[email protected]+6>: push $0x10
0x080482bf <[email protected]+11>: jmp 0x8048284 <_init+48>
End of assembler dump.
(gdb) stepi
0x080482bf in [email protected]()
(gdb) stepi
0x08048284 in ??()
(gdb) disassemble
No function contains program counter for selected frame.
Sai come eseguire il debug di queste chiamate di libreria con gdb.
Quale versione di gdb? –
Inoltre, cosa succede quando usi stepi su Linux? Dici che non puoi assolutamente seguire le istruzioni, ma non descrivi cosa succede realmente. Puoi pubblicare una sessione di esempio? –
Grazie, sto usando Slackware 13.0 con il suo gdb preinstallato 6.8. Ho chiarito cosa succede. – Freeman