2

gdb でプログラムをデバッグしています。オプションを使用して非対話型デバッグを行うことができ-xます。

gdb -x gdbinit ./myprogram

gdbinitファイルの内容:

handle SIGINT pass nostop noprint
handle SIGQUIT pass nostop noprint
handle SIGUSR1 pass nostop noprint
handle SIGUSR2 pass nostop noprint
run
backtrace
quit

4 つのシグナルは、私のプログラムが適切に動作するために必要なため、gdb によって処理されません。

このbacktraceコマンドは、クラッシュ後にバックトレースを取得するのに役立ちます。

コマンドはquit、クラッシュした場合でも、プログラムの実行後に gdb を終了させます。

プログラムが正常に終了した場合にのみ自動的に終了したい。それ以外の場合は、バックトレースなどを分析するために gdb を使用できる必要があります。

プログラムがエラーなしで終了する場合にのみ、gdbを終了するにはどうすればよいですか?

4

1 に答える 1

8

$_exitcode GDB 便利な変数を使用します。上記の gdb スクリプトで、以下を置き換えます。

run

と:

set $_exitcode = -1
run
if $_exitcode != -1 
    quit
end

最後の行を削除するとquitうまくいくはずです。-1POSIX では終了ステータスの下位 8 ビットしか使用できないため、不可能な値として使用しても機能します。( wait(2)WEXITSTATUS()を参照)。

GDB Python API を使用して同じことを行うには、こちらを参照してください。

于 2012-11-08T21:48:33.957 に答える