web-dev-qa-db-ja.com

「とにかくやめる」を取り除くGDBを使用してプロンプトを表示する:プロセスを強制終了して終了するだけです

考えてみましょう:

(gdb) q
A debugging session is active.

        Inferior 1 [process 9018] will be killed.

Quit anyway? (y or n) y

GDBが終了要求で実行中のプロセスを常に強制終了するようにする.gdbinitオプションとは何ですか?

GDBはすでに実行中のプロセスにアタッチできることを知っているので、終了時にそれらを強制終了するのは悪いことです。しかし、それから開始されたプロセスの場合、アクションを確認する必要があり、2回目の終了時に煩わしくなり始めます。

51
kagali-san

確認プロンプトをオフにすると、「delete」と入力したときにすべてのブレークポイントを本当に削除するかどうかを尋ねるチェックなど、他の多くの便利なチェックがグローバルに無効になります。

Quitコマンドに対してのみプロンプトを無効にすることをお勧めします。これを行うには、このフックを〜/ .gdbinit(現在のユーザーの場合)または/ etc/gdb/gdbinit(すべてのユーザーの場合)に追加します。

define hook-quit
    set confirm off
end
61
Eric
set confirm off

詳細については、 gdb doc を参照してください。

27
ks1322

別のオプションは、確認を求めずに終了する新しいコマンドを定義することです。

define qquit
  set confirm off
  quit
end
document qquit
Quit without asking for confirmation.
end

これで、qquitのデフォルトの動作を変更せずにqqまたは単にquitを使用してすばやく終了できます。

11
Jonathan Wakely

結論として、これはプログラムを直接実行し、終了の確認を求めません。

gdb -ex="set confirm off" -ex=r --args ...
0
Mattias Wadman