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

イベント指定のための修飾子

イベント指定のため修飾子は、ハンドラの追加属性を設定します。最も一般的な種類はイベントフィルタです。修飾子はイベント指定のキーワードの後に指定しなければなりません。修飾語はすべて '-' で始まります (その前にブランクが置かれます)。各修飾子の構成は次のとおりです。

-if cond

event-spec で指定されたイベントが発生したとき、条件 cond が評価されます。イベントは、条件が非ゼロと評価された場合にだけ発生すると考えられます。条件は、フィルタと呼ばれることがあります。フィルタを使用したハンドラをフィルタ化ハンドラと呼びます。

-if が、in または at などの単独のソース位置に基づくイベントで使用された場合、cond はその位置に対応するスコープで評価されます。そうでない場合は、必要なスコープによって正しく修飾する必要があります。

-in func

ハンドラは、指定した関数 func、または func から呼び出された関数によって制御されている間だけ有効になります。関数へ入った回数は、再帰呼び出しに正しく対応するため「参照による計数」が行われます。修飾語 -in によって修飾されたハンドラは、「func によって範囲が制限されている」といいます。

-disable

無効な状態にしてイベントを作成します。

-count n / -count infinity

イベントをゼロからカウントします。count はその値が n に達するまで、イベントが発生するたびにインクリメントされます。カウントが n に達すると、イベントが起動し、カウンタがゼロにリセットされます。

プログラムが実行または再実行されると、すべてのイベントのカウントがリセットされます。より具体的に言えば、カウントは sync イベントが発生するとリセットされます。

-temp

一時ハンドラを作成します。イベントが発生すると、一時イベントは削除されます。デフォルトではハンドラは、一時イベントではありません。ハンドラが計数ハンドラ (-count が指定されたイベント) の場合はゼロに達すると自動的に破棄されます。

一時ハンドラをすべて削除するには delete -temp を実行します。

-instr

イベントを命令レベルで動作させます。これにより、ほとんどの 'i' で始まるコマンドは不要となります。この修飾子は、イベントハンドラの 2 つの面を修飾します。

-thread tid

指定されたイベントがスレッド識別子 tid に一致するアクティブなスレッドで発生した場合にコマンドを実行します。

-lwp lid

指定されたイベントが LWP 識別子 lid に一致するアクティブな LWP で発生した場合にコマンドを実行します。

-hidden

ハンドラが正規の status コマンドに示されないようにします。隠されたハンドラを表示するには、status -h を使用してください。

-perm

通常、すべてのハンドラは、新しいプログラムが読み込まれると廃棄されます。この修飾子を使用すると、ハンドラはデバッグが終わっても保存されます。delete コマンド単独では、永続ハンドラは削除されません。永続ハンドラを削除するには、delete -p を使用してください。