Oracle Solaris Studio 12.2: dbx コマンドによるデバッグ

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

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

-if condition

イベント仕様で指定されたイベントが発生したとき、条件が評価されます。イベントは、条件が非ゼロと評価された場合にだけ発生すると考えられます。

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

-resumeone

-resumeone 修飾子は、-if 修飾子とともにイベント仕様内でマルチスレッドプログラムに対して使用して、条件に関数呼び出しが含まれている場合に 1 つのスレッドのみを再開することができます。詳細については、「条件付イベントでのフィルタの使用」を参照してください。

-in function

イベントは、最初の指定 function の命令に達したときから関数が戻るまでの間に発生した場合にのみ開始されます。関数の再帰は無視されます。

-disable

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

-count n -count infinity

-count n および -count infinity 修飾子は、0 からのハンドラカウントを持ちます (「イベントカウンタ」参照)。イベントが発生するたび、n に達するまでカウントはインクリメントします。一度それが生じると、ハンドラはファイアし、カウンタはゼロにリセットされます。

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

カウントは debug -r コマンド (debug コマンド」参照) または attach -r コマンド (attach コマンド」参照) を使用して新しいプログラムのデバッグを開始したときにリセットされます。

-temp

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

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

-instr

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

-thread thread_id

イベントを引き起こしたスレッドが thread_id と一致する場合にかぎり、アクションが実行されます。プログラムの実行を繰り返すうちに特定スレッドの thread_id が変わってしまうことがあります。

-lwp lwp_id

イベントを引き起こしたスレッドが lwp_id と一致する場合にかぎり、アクションが実行されます。イベントを引き起こしたスレッドが lwp_id と一致する場合にかぎり、アクションが実行されます。プログラムの実行を繰り返すうちに特定スレッドの lwp_id が変わってしまうことがあります。

-hidden

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

-perm

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