いくつかの gdb コマンドを実行する単純なテキスト ベースのユーザー インターフェイスを開発しようとしています。ユーザーがコードの特定の領域でポイントを設定してブレーク/トレースし、いくつかのデバッグ コマンドを実行できるようにしたいと考えています。
デバッグが必要な関数をユーザーに入力してもらいたい。次に、この関数名を取得して関数のソース コードを出力し、ブレーク/トレース ポイントを設定するコード行をユーザーに選択してもらいます。現時点では、逆アセンブル コマンドを使用してメモリ アドレスを出力できますが、代わりに実際のソース コードを出力したいと考えています。
これは gdb で実行できますか?
現在:
Dump of assembler code for function test_function:
0x03800f70 <test_function+0>: push %ebp
0x03800f71 <test_function+1>: mov %esp,%ebp
0x03800f73 <test_function+3>: sub $0x48,%esp
私が欲しいもの:
void main()
{
printf("Hello World\n");
}
ありがとう!
編集:私はこれを取得しています:
(gdb) list myFunction
941 directory/directory_etc/sourcefile.c: No such file or directory.
in directory/directory_etc/sourcefile.c
次に、linenumを指定してみました:
(gdb) list directory/directory_etc/sourcefile.c:941
936 in directory/directory_etc/sourcefile.c
したがって、動作はあなたが説明しているものと似ていますが、「list filename:linenum」はまだ機能していません
ありがとうございました!