我可以使用stepi和nexti在不调试信息的情况下调试应用程序。在Linux和Mac OS X中使用gdb调试反汇编库
在Mac OS X上gdb显示库中调用的函数,虽然有时会在每个stepi指令中推进几个汇编指令。
在Linux上,当我进入动态库时,gdb会丢失。例如,对于puts(),在puts()中有三个汇编程序指令,一旦gdb在0x080482bf处跳转,它将失败并显示消息“无功能包含选定帧的程序计数器”。
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.
你知道如何用gdb调试这些库调用。
哪个版本的gdb? – 2009-10-22 19:57:59
另外,当您在Linux上使用stepi时会发生什么?你说你根本无法完成指示,但你没有描述实际发生的情况。你可以发布一个示例会议吗? – 2009-10-22 20:03:57
谢谢,我使用的是预装gdb 6.8的Slackware 13.0。 我已澄清发生了什么。 – Freeman 2009-10-24 08:21:32