Solaris モジューラデバッガ

実行制御

MDB はシンプルな実行制御モデルを提供します。ターゲットプロセスを起動するには、::run を使用してデバッガ内から起動するか、:A::attach、または -p コマンド行オプション (第 5 章「組み込みコマンド」を参照) を使用して MDB を既存のプロセスに接続します。別の方法として、kmdb を使用してカーネルをブートしたり、kmdb を後で読み込んだりすることもできます。どちらの場合も、ユーザーは追跡対象「ソフトウェアイベント」のリストを指定できます。追跡対象イベントがターゲットプログラム内で発生するごとに、 ターゲット内のすべてのスレッドが停止して、そのイベントをトリガーしたスレッドが代表スレッドとして選択され、デバッガに制御が戻ります。ターゲットプログラムが「running (動作中)」と設定されると、ユーザー定義割り込み文字 (通常は Ctrl + C) を入力して、非同期的にデバッガに制御を戻すことができます。

ソフトウェアイベント」とは、デバッガが監視しているターゲットプログラムにおける状態遷移のことです。たとえば、デバッガは、プログラムカウンタレジスタが特定の値 (ブレークポイント) に変更されたり、特定のシグナルが送られたりするのを監視できます。

ソフトウェアイベント指定子」とは、デバッガがどのようなイベントを監視するかをターゲットプログラムに指示するときに使用するソフトウェアイベントのクラスのことです。ソフトウェアイベント指定子のリストを表示するには、::events dcmd を使用します。各ソフトウェアイベント指定子には標準プロパティーセットが関連付けられています (「組み込み dcmd」の「::events」を参照)。

デバッガはさまざまなソフトウェアイベント (たとえば、ブレークポイント、ウォッチポイント、シグナル、マシン障害、およびシステムコールなど) を監視できます。::bp::fltbp::sigbp::sysbp、または ::wp を使用すると、新しいソフトウェアイベント指定子を作成できます。各指定子には、コールバック (コマンド行に入力された場合と同じように動作する MDB コマンド文字列) とプロパティーセットが関連付けられています (「組み込み dcmd」の「::events」を参照)。異なるコールバックとプロパティーを持つのであれば、任意の数の指定子を同じイベントに作成できます。追跡対象イベントの現在のリストや対応するイベント指定子のプロパティーを表示するには、::events dcmd を使用します。イベント指定子のプロパティーの定義については、「組み込み dcmd」の「::events dcmd」と「::evset dcmd」を参照してください。

実行制御組み込み dcmd (「組み込み dcmd」を参照) はいつでも利用できますが、実行制御がサポートされないターゲットに適用しようとすると、「このターゲットはサポートされません」というエラーメッセージが表示されます。