更新 : 2007 年 11 月
共通言語ランタイム (CLR: Common Language Runtime) のデバッグ API を使用することで、ツールの販売元は、CLR 環境で実行するアプリケーションをデバッグするためのデバッガを作成できます。CLR がサポートするすべての種類のコードをデバッグできます。
CLR デバッグ API は、主にアンマネージ コードで実装されています。したがって、デバッグ API は、COM インターフェイスのセットとして提供されます。API は、CLR によって実装される COM オブジェクトとインターフェイスのコレクション、およびデバッガが実装する必要のある COM コールバック インターフェイスのコレクションで構成されます。これらのデバッグ インターフェイスはすべて COM に基づくので、デバッガ プログラムは、分散 COM (DCOM: Distributed COM) を使用することで、リモート デバッグが可能なように簡単に拡張できます。
API のカテゴリ
デバッガ API には、次の 3 つのインターフェイス グループが含まれます。通常、これらはすべて CLR デバッガによって使用され、アンマネージ コードとして実装されます。
CLR アプリケーションのデバッグをサポートするインターフェイス。
シンボリック デバッグ情報にアクセスするためのインターフェイス。通常は、プログラム データベース (PDB: Program Database) ファイルに格納されます。
コンピュータ上のプロセスおよびアプリケーション ドメインのクエリをサポートするインターフェイス。
デバッグ API は、次の 2 つのインターフェイス セットに依存します。
クラスやメソッド型の情報など、静的なプログラム情報の検査を処理するためのメタデータ API。
マネージ コード デバッガのソース レベル デバッグをサポートするためのシンボル ストア API。
また、デバッグ インターフェイスは、次の表に示すような機能的なカテゴリにまとめることもできます。
API のカテゴリ |
説明 |
---|---|
登録 |
CLR に登録するため、および特定のイベントが発生したときの通知を要求するために、デバッガが呼び出すインターフェイス。 |
通知 |
さまざまなイベントをデバッガに通知するため、および要求された情報を返すために、CLR が使用するコールバック インターフェイス。これらのインターフェイスは、デバッガが実装する必要があります。 |
ブレークポイント |
ブレークポイントに関する情報を取得するために、デバッガが呼び出すインターフェイス。 |
実行 |
デバッグ対象の実行を制御するため、および呼び出し履歴にアクセスするために、デバッガが呼び出すインターフェイス。 |
情報 |
デバッグ対象に関する情報を取得するために、デバッガが呼び出すインターフェイス。 |
列挙 |
オブジェクトを列挙するために、デバッガが呼び出すインターフェイス。 |
変更 |
デバッグされているコードを変更するために、デバッガが呼び出すインターフェイス。 |
サポートされる環境
CLR のデバッグ機能は、CLR がサポートするすべてのプロセッサとオペレーティング システムで利用できますが、次のような例外があります。
64 ビット オペレーティング システムでは、エディット コンティニュおよび混合モード デバッグはサポートされません。SetIP メソッド (ICorDebugILFrame::SetIP および ICorDebugNativeFrame::SetIP) では、64 ビット オペレーティング システムに固有の制限事項があります。他の機能はすべてのプロセッサに共通で、プロセッサ固有のデータ表現 (ポインタ サイズ、レジスタ コンテキストなど) に対応します。
Win9x ベースのオペレーティング システムでは、エディット コンティニュおよび混合モード デバッグはサポートされません。特定の例外がいくつかありますが (これらについては、個々の関数のマニュアルで説明されています)、他の機能はすべてのオペレーティング システムで共通です。