モジューラデバッガ (MDB) は、Solaris で使用する新しい汎用デバッグ用ツールで、主な特長はその拡張性にあります。このマニュアルでは、複雑なソフトウェアシステムをデバッグする MDB の使用方法について、特に、Solaris カーネル、関連するデバイスドライバ、モジュールなどをデバッグする場合に使用可能な機能に重点を置いて説明します。さらに、このマニュアルには、MDB 言語構文、デバッガ機能、および MDB モジュールプログラミング API についてのリファレンスと解説も記載されています。
デバッギングとは、欠陥を取り除くために、ソフトウェアプログラムの実行と状態を分析するプロセスのことです。従来のデバッグ用のツールは、実行制御の機能を備えたもので、それによって、プログラマは制御された環境でプログラムを実行し直したり、プログラムデータの現在の状態を表示したり、プログラム開発に使用するソース言語の表現を評価したりできます。しかし、残念ながら従来の技術では、次のような複雑なソフトウェアシステムをデバッグするには適さない場合がしばしばあります。
バグが再現されず、プログラムの状態が大規模で分散型になっているオペレーティングシステム
プログラムが高度に最適化されていたり、デバッグの情報が消去されていたりする
プログラムそのものが、低レベルのデバッグ用ツールである
開発者が顧客からの事後分析情報にしかアクセスできない
MDB は、上記のようなプログラムや状況をデバッグするために、徹底的にカスタマイズできるツールです。MDB に含まれている動的なモジュール機能を使用して、プログラム固有の分析を行う場合に、プログラマ独自のデバッギングコマンドを実行することができます。プログラムの実行時、事後分析時などさまざまな状況で、各 MDB モジュールをプログラム検査に使用することができます。Solaris オペレーティング環境には、MDB モジュールセットが含まれており、プログラマがこれを使用して、Solaris カーネル、関連するデバイスドライバ、カーネルモジュールなどをデバッグできるように設計されています。サードパーティの開発者にも、スーパーバイザーやユーザーソフトウェア用に独自のデバッギングモジュールを開発して配布する場合に、MDB モジュールが役立つと実感していただけるでしょう。
MDB では、Solaris カーネルやその他のターゲットプログラムを分析する一連の機能を備えているため、次のことが可能になります。
Solaris カーネルのクラッシュダンプや、ユーザープロセスのコアダンプの事後分析ができます。MDB には、さまざまな機能を備えた一連のデバッガモジュールが含まれています。そのため、標準のデータディスプレイやフォーマット機能に加えて、カーネルやプロセスの状態を詳細に分析することができます。デバッガモジュールを使用して、次のような複雑な照会を行うこともできます。
特定のスレッドによって割り当てられたすべてのメモリーを検出する
カーネル STREAM のビジュアル画像を出力する
特定のアドレスが参照している構造タイプを判定する
カーネルの中でリークしているメモリーブロックを検出する
スタックトレースを検出するためのメモリーを分析する
デバッガそのものをコンパイルし直したり修正したりすることなく、独自のデバッガコマンドや分析ツールを導入するために有効なプログラミング API が使用できます。MDB では、デバッギング機能が、ロード可能なモジュールセットとして実装されていて、デバッガが dlopen(3DL) を実行できる共用ライブラリになっています。各モジュールは、デバッガそのものの機能を拡張するコマンドセットを提供します。同様に、デバッガは、メモリーの読み取りや書き込み、シンボルテーブル情報へのアクセスなど、コアサービスの API を提供します。MDB は、フレームワークを提供しているので、開発者は独自のドライバやモジュール用にデバッギング機能を開発することができます。このため誰もがこれらのモジュールを使用できるようになります。
adb(1) や crash(1M) のような旧来のデバッグ用ツールに慣れている場合は、MDB も簡単に使用できます。MDB は、これら既存のデバッギングソリューションに対して下位互換を有しています。MDB 言語そのものは、adb 言語のスーパーセットとして設計されていますが、既存の adb マクロやコマンドは MDB 内でも機能するので、adb 言語を使用している開発者は、MDB 固有のコマンドを知らなくてもすぐに MDB を使用できます。また、MDB では、クラッシュユーティリティで使用される機能よりも強力なコマンドも用意しています。
拡張機能を使用できます。MDB は、次のような便利な機能を多数提供しています。
コマンド行の編集
コマンドの履歴
組み込み型の出力ページャ
構文エラーのチェックと処理
オンラインヘルプ
対話型セッションログ
MDB を使用すれば、高度な事後分析ツールの開発を確実に行うことができます。今後は、Solaris オペレーティング環境にさらに MDB モジュールを追加し、カーネルやその他のソフトウェアプログラムのデバッグに、一層高性能な機能を提供していきます。既存のソフトウェアプログラムのデバッグにも、Solaris ドライバとアプリケーションのデバッグ機能を向上させるための独自のモジュール開発にも、MDB を活用してください。