Solaris モジューラデバッガ

イベントコールバック

::evset dcmd とイベント追跡用の dcmd を使用すると、(-c オプションを使用して)、イベント指定子ごとにイベントコールバックを関連付けることができます。「イベントコールバック」とは、ターゲットにおいて対応するイベントが発生したときに実行される MDB コマンドを表す文字列のことです。このようなコマンドは、コマンドプロンプトに入力された場合と同じように実行されます。各コールバックが実行される前に、dot 変数には代表スレッドのプログラムカウンタの値が設定され、hits 変数には当該指定子が一致した回数 (現在の一致も含む) が設定されます。

ターゲットを継続するための 1 つまたは複数のコマンド (たとえば、::cont::step) が、イベントコールバック自身に含まれる場合、このようなコマンドはターゲットをすぐに継続したり、ターゲットがもう一度停止するまで待機したりしません。その代わりに、このようなターゲットを継続する dcmd は「現在、継続操作が中断されている」ということをイベントコールバック内部に示して、すぐに戻ります。したがって、複数の dcmd がイベントコールバックに含まれている場合、ステップまたは継続用の dcmd は最後に指定する必要があります。「すべて」のイベントコールバックを実行したあと、一致した「すべて」のイベントコールバックが継続を要求している場合、ターゲットはすぐに実行を再開します。要求された継続操作が競合する場合、どの種類の操作を継続するかは、優先順位がもっとも高い継続操作が決定します。優先順位は (高いものから)、「ステップ (step)」、「ステップオーバー (step-over) または次 (next)」、「ステップアウト(step-out)」、そして「継続 (continue)」の順番になります。