GDBにはスクリプティングメカニズムが組み込まれていますか、期待されるスクリプトをコーディングする必要がありますか、それともさらに優れたソリューションがありますか?
毎回同じコマンドシーケンスを送信し、各コマンドの出力をファイルに保存します(誰かがより良いアイデアを持っている場合を除き、GDBの組み込みロギングメカニズムを使用する可能性が高い)。
gdb
は、実行後にファイル_.gdbinit
_を実行します。したがって、このファイルにコマンドを追加して、それが問題ないかどうかを確認できます。これは、すべてのf()
呼び出しのバックトレースを出力するための_.gdbinit
_の例です。
_set pagination off
set logging file gdb.txt
set logging on
file a.out
b f
commands
bt
continue
end
info breakpoints
r
set logging off
quit
_
ファイルに-xが大きすぎる場合は、複数の-exを使用してください。これは、クラッシュ時にバックトレースを表示(および保存)する実行中のプログラムを追跡する例です
Sudo gdb -p $(pidof my-app) -batch \
-ex "set logging on" \
-ex continue \
-ex "bt full" \
-ex quit