次: Command Files, 前: Define, 上: Sequences
特別な種類のユーザ定義コマンドである、 フックを定義することができます。 `hook-foo'というユーザ定義コマンドが存在すると、 `foo'というコマンドを実行するときにはいつも、 `foo'コマンドが実行される前に (引数のない) `hook-foo'が実行されます。
また、 仮想コマンドである`stop'が存在します。 (`hook-stop'を) 定義すると、 ユーザ・プログラムの実行が停止するたびに、 その定義内のコマンドが実行されます。 実行タイミングは、 ブレイクポイント・コマンドの実行、 自動表示対象の表示、 および、 スタック・フレームの表示の直前です。
例えば、
シングル・ステップ実行をしている際にはSIGALRM
シグナルを無視し、
通常の実行時には通常どおり処理したい場合には、
以下のように定義します。
define hook-stop handle SIGALRM nopass end define hook-run handle SIGALRM pass end define hook-continue handle SIGLARM pass end
GDBのコマンドのうち、
その名前が1つの単語から成るものには、
フックを定義することができます。
ただし、
コマンド・エイリアスにフックを定義することはできません。
フックは、
コマンドの基本名に対して定義しなければなりません。
例えば、
bt
ではなくbacktrace
を使います。
フックの実行中にエラーが発生すると、
GDBコマンドは停止します。
(ユーザが実際に入力したコマンドが実行する機会を与えられる前に)
GDBはプロンプトを表示します。
既知のコマンドのいずれにも対応しないフックを定義しようとすると、
define
コマンドは警告メッセージを表示します。