我可以使用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