Debuggen disassemblierter Bibliotheken mit gdb

Unter Linux und Mac OS X kann ich mit stepi und nexti eine Anwendung debuggen, ohne Informationen zu debuggen.

Unter Mac OS X zeigt gdb die Funktionen an, die in der Bibliothek aufgerufen werden, obwohl manchmal mehrere Assembler-Anweisungen in jeder stepi-Anweisung erweitert werden.

Wenn ich unter Linux eine dynamische Bibliothek betrete, geht die GDB verloren. Beispiel: Mit puts () gibt es drei Assembler-Anweisungen in puts (). Sobald gdb den Sprung um 0x080482bf erreicht, schlägt die Meldung fehl, dass keine Funktion den Programmzähler für den ausgewählten Frame enthält.

0x080482ba in puts@plt ()
(gdb) disassemble
Dump of assembler code for function puts@plt:
0x080482b4 <puts@plt+0>:        jmp    *0x8049580
0x080482ba <puts@plt+6>:        push   $0x10
0x080482bf <puts@plt+11>:       jmp    0x8048284 <_init+48>
End of assembler dump.
(gdb) stepi
0x080482bf in puts@plt ()
(gdb) stepi
0x08048284 in ?? ()
(gdb) disassemble
No function contains program counter for selected frame.

Wissen Sie, wie Sie diese Bibliotheksaufrufe mit gdb debuggen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage