考えてみましょう:
(gdb) q
A debugging session is active.
Inferior 1 [process 9018] will be killed.
Quit anyway? (y or n) y
GDBが終了要求で実行中のプロセスを常に強制終了するようにする.gdbinit
オプションとは何ですか?
GDBはすでに実行中のプロセスにアタッチできることを知っているので、終了時にそれらを強制終了するのは悪いことです。しかし、それから開始されたプロセスの場合、アクションを確認する必要があり、2回目の終了時に煩わしくなり始めます。
確認プロンプトをオフにすると、「delete」と入力したときにすべてのブレークポイントを本当に削除するかどうかを尋ねるチェックなど、他の多くの便利なチェックがグローバルに無効になります。
Quitコマンドに対してのみプロンプトを無効にすることをお勧めします。これを行うには、このフックを〜/ .gdbinit(現在のユーザーの場合)または/ etc/gdb/gdbinit(すべてのユーザーの場合)に追加します。
define hook-quit
set confirm off
end
set confirm off
詳細については、 gdb doc を参照してください。
別のオプションは、確認を求めずに終了する新しいコマンドを定義することです。
define qquit
set confirm off
quit
end
document qquit
Quit without asking for confirmation.
end
これで、qquit
のデフォルトの動作を変更せずにqq
または単にquit
を使用してすばやく終了できます。
結論として、これはプログラムを直接実行し、終了の確認を求めません。
gdb -ex="set confirm off" -ex=r --args ...