web-dev-qa-db-ja.com

GDBデバッグセッションを自動化する最良の方法は何ですか?

GDBにはスクリプティングメカニズムが組み込まれていますか、期待されるスクリプトをコーディングする必要がありますか、それともさらに優れたソリューションがありますか?

毎回同じコマンドシーケンスを送信し、各コマンドの出力をファイルに保存します(誰かがより良いアイデアを持っている場合を除き、GDBの組み込みロギングメカニズムを使用する可能性が高い)。

60
Anonymous

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
_
57
Sergei Kurenkov

ファイルに-xが大きすぎる場合は、複数の-exを使用してください。これは、クラッシュ時にバックトレースを表示(および保存)する実行中のプログラムを追跡する例です

Sudo gdb -p $(pidof my-app) -batch \
  -ex "set logging on" \
  -ex continue \
  -ex "bt full" \
  -ex quit
8
Treviño