dbx コマンドによるデバッグ

イベントハンドラの作成

次のコマンド (when、stop、trace) はイベントハンドラを作成します。event-spec はこの章で後述するイベント指定です。

コマンドが実行される度にハンドラ ID (hid) を返します。この番号には、事前定義変数$newhandlerid を介してアクセスすることができます。

stopwhen コマンドをできるだけ一般化してハンドラのモデルに合致させるように試みましたが、以前の 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

when コマンドで指定したイベントが発生すると、cmds で指定したアクションが実行されます。コマンドがすべて実行されると、プロセスは自動的に続けられます。


when event-specification  [ modifier ] { cmds ... ; }

stop

stop コマンドで指定したイベントが発生すると、プロセスは停止します。


stop event-specification  [ modifier ]

stop は共通の以下の when の短縮形です。


when event-specification { stop -update; whereami; }

trace

trace コマンドで指定したイベントが発生すると、トレースメッセージが出力されます。


trace event-specification

ここで説明している trace コマンドのほとんどは、when コマンド、ksh 機能、イベント変数を使用して書き換えることができます。これは、トレース情報を書式化して出力したい場合に特に便利です。