在
Linux和Mac OS X中,我可以使用stepi和nexti调试应用程序,而无需调试信息.
在Mac OS X上,gdb显示了在库中调用的函数,尽管有时在每个stepi指令中提前执行几个汇编器指令.
在Linux上,当我进入一个动态库gdb失去了.例如,puts()在puts()中有三个汇编指令,一旦gdb到达0x080482bf的跳转,就会失败,并显示“No function contains program counter for selected frame”.
0x080482ba in puts@plt ()
(gdb) disassemble
Dump of assembler code for function puts@plt:
0x080482b4 : jmp *0x8049580
0x080482ba : push $0x10
0x080482bf : jmp 0x8048284 <_init>
End of assembler dump.
(gdb) stepi
0x080482bf in puts@plt ()
(gdb) stepi
0x08048284 in ?? ()
(gdb) disassemble
No function contains program counter for selected frame.
你知道如何使用gdb调试这些库调用.