Solaris モジューラデバッガ

ブロックの構築

ターゲットとは、デバッガによって検査されるプログラムのことです。MDB は、現在次のターゲットをサポートしています。

各ターゲットは、プロパティーの標準セットをエクスポートします。プロパティーには、1 つまたは複数のアドレス空間、1 つまたは複数のシンボルテーブル、ロードオブジェクトセット、およびスレッドセットが含まれます。図 2–1 は、MDB アーキテクチャーの概要を示したもので、2 つの組み込みターゲットとサンプルモジュールのペアが入っています。

デバッガコマンド (MDB 用語法では、dcmd と表記し、「ディーコマンド」と読む) は、デバッガルーチンで、現ターゲットのどのプロパティーにもアクセスできます。MDB は、標準入力からコマンドを構文解析し、次に対応する dcmd を実行します。各 dcmd は、文字列や数値引数のリストも受け取ることができます (「構文」を参照)。第 5 章「組み込みコマンド」で説明しますが、MDB には、常に使用可能な組み込み dcmd セットが入っています。MDB から提供されるプログラミング API を使用して dcmd を作成することにより、プログラマは MDB そのものの機能を拡張することもできます。

walker は、特定のプログラムデータ構造体の要素を調べたり、繰り返し調べたりする方法を記述するルーチンセットです。walker は、dcmd や MDB そのものからデータ構造体の実装状態をカプセル化します。walker は、対話処理でも使用でき、ほかの dcmd や walker を構築するためのプリミティブとしても使用できます。dcmd の場合と同様に、walker を追加してデバッガモジュールの一部として実装することにより、プログラマは MDB を拡張できます。

デバッガモジュール (dmod と表記し、「ディーモッド」と読む) は、動的に読み込まれるライブラリで、一連の dcmd と walker が含まれています。初期設定の状態では、MDB は、ターゲット内に存在するロードオブジェクトに対応する dmod を読み込もうとします。その後、MDB を実行している間はいつでも、dmod の読み込みや読み込み解除ができます。MDB では、Solaris カーネルをデバッグするための標準 dmod セットが提供されています。

「マクロファイル」とは、実行するコマンドセットが入っているテキストファイルのことです。一般的に、マクロファイルは、単純データ構造体の表示プロセスを自動化するときに使用されます。MDB には下位互換性があるので、adb 言語向けに書かれたマクロファイルを実行できます。したがって、Solaris のインストールで提供されるマクロファイルセットは、新旧どちらのツールでも使用可能です。

図 2–1 MDB アーキテクチャー

この図は、MDB の構成要素 (デバッガエンジンの上にある MDB 言語と MDB モジュール API) を示しています。