私はコンパイラの分野にまったく慣れていません。私は gcc を使用しており、特定の実行 (最後の実行で実際に実行されたステートメントのみ) のプログラムの実行履歴を取得したいと考えています。
gdbで可能ですか?実行されたステートメントを出力できる gdb で関連するオプションを取得できませんでした。または、実行履歴を取得する他の方法はありますか?
よろしく、ニキル。
プロセス レコードは、あなたが探しているものかもしれません。このリンクには、簡単なチュートリアルと機能の概要が含まれています。
リンクされたウィキページから:
このプログラムを -g でコンパイルし、gdb にロードしてから、次の手順を実行します。
(gdb) break main (gdb) run (gdb) record
これにより、プロセスの記録がオンになり、デバッグ中のプログラムによって実行される後続のすべての命令が記録されます。
プロセスの記録は、(メインだけでなく) いつでも開始できることに注意してください。後で開始するか、それより早く開始するかを選択できます。唯一の制限は、プログラムが実行されている必要があることです (したがって、「記録」の前に「実行」と入力する必要があります)。プログラムの最初の命令から記録を開始する場合は、次のようにします。
(gdb) break _start (gdb) run (gdb) record
お役に立てれば。
コマンドを使用set history save
して履歴の記録を開始できます。これは、~/.gdbinit
ファイルに書き込むことができます。詳細については、ドキュメントを参照してください。