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.