次のコマンド (when、stop、trace) はイベントハンドラを作成します。event-spec はこの章で後述するイベント指定です。
コマンドが実行される度にハンドラ ID (hid) を返します。この番号には、事前定義変数$newhandlerid を介してアクセスすることができます。
stop と when コマンドをできるだけ一般化してハンドラのモデルに合致させるように試みましたが、以前の dbx リリースとの下位互換性を保つために完璧にはできませんでした。
その一例として、初期の dbx バージョンで使用されていたハンドラと、それに相当する新しいハンドラを次の表に示します。
表 6-1 イベントハンドラの例
旧ハンドラ |
新ハンドラ |
---|---|
when cond body |
when step -if cond body |
when cond in func body |
when next -if cond -in func body |
この例は、cond が純粋なイベントではなく、条件の内部ハンドラがないことを示しています。
when コマンドで指定したイベントが発生すると、cmds で指定したアクションが実行されます。コマンドがすべて実行されると、プロセスは自動的に続けられます。
when event-specification [ modifier ] { cmds ... ; }
stop コマンドで指定したイベントが発生すると、プロセスは停止します。
stop event-specification [ modifier ]
when event-specification { stop -update; whereami; }
trace コマンドで指定したイベントが発生すると、トレースメッセージが出力されます。
trace event-specification
ここで説明している trace コマンドのほとんどは、when コマンド、ksh 機能、イベント変数を使用して書き換えることができます。これは、トレース情報を書式化して出力したい場合に特に便利です。