LinuxおよびMac OS X stepiおよびnextiを使用して、デバッグ情報なしでアプリケーションをデバッグすることができます。gdbで逆アセンブルされたライブラリのデバッグ
Mac OS Xの場合、gdbはライブラリ内で呼び出される関数を表示しますが、各stepi命令でいくつかのアセンブラ命令を進めることもあります。
Linuxでは、動的ライブラリに入るとgdbが失われます。たとえば、puts()にはputs()内に3つのアセンブラ命令があり、gdbが0x080482bfでジャンプすると、 "No function for select frame for program counter"というメッセージで失敗します。
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のどのバージョンですか? –
また、Linuxでstepiを使用するとどうなりますか?あなたは指示を一歩も進めることはできないと言っていますが、実際に何が起こったのかは記述していません。サンプルセッションを投稿できますか? –
ありがとうございます、私はgack 6.8がプリインストールされたSlackware 13.0を使用しています。 私は何が起こるかを明確にしました。 – Freeman