デバッガー プログラミング拡張機能 API

このセクションには、次が含まれます。

デバッガー エンジンの概要

デバッガー エンジン API の使用

DbgEng 拡張機能の作成

EngExtCpp 拡張機能

WdbgExts 拡張機能の作成

DML を使用したデバッガー出力のカスタマイズ

JavaScript を使用してデバッガーの機能を拡張する

KDNETトランスポート拡張モジュールの開発

このドキュメントでは、WinDbg、KD、CDB、および NTSD で動作する拡張機能を記述するために、デバッガエンジンが提供するインターフェイスなどを使用する方法について説明します。 これらのデバッガー拡張機能は、ユーザー モードまたはカーネル モードのデバッグを実行するときに使用できます。

デバッガ―エンジン

デバッガー エンジンには、ユーザー モードとカーネル モードでデバッグ ターゲットを調べて操作するためのインターフェイスが用意されています。

デバッガー エンジンは、ターゲットの取得、ブレークポイントの設定、イベントの監視、シンボルのクエリ、メモリの読み取りと書き込み、ターゲット内のスレッドとプロセスの制御を行うことができます。

デバッガー エンジンを使用して、デバッガー拡張機能ライブラリとスタンドアロン アプリケーションの両方を記述できます。 このようなアプリケーションは デバッガー エンジン アプリケーションです。 デバッガー エンジンのすべての機能を使用するデバッガー エンジン アプリケーションは、デバッガーです。 たとえば、WinDbg、CDB、NTSD、KD はデバッガーです。デバッガー エンジンは、その機能のコアを提供します。

デバッガー エンジン API は、ヘッダー ファイル dbgeng.h のプロトタイプによって指定されます。

詳細については、「デバッガー エンジンの概要」および「デバッガー エンジン APIの使用」 を参照してください。

拡張機能

拡張 DLL を作成して構築することで、独自のデバッグ コマンドを作成できます。 たとえば、複雑なデータ構造を表示する拡張コマンドを記述できます。

デバッガー拡張 DLL には 3 つの異なるタイプがあります。

  • DbgEng 拡張機能 DLLs これらは、dbgeng.h ヘッダー ファイル内のプロトタイプに基づいています。 この種類の各 DLL は、DbgEng 拡張コマンドをエクスポートできます。 これらの拡張機能コマンドはデバッガー エンジン API を使用し、WdbgExts API を使用することもできます。

    詳細については、「DbgEng 拡張機能の作成」を参照してください。

  • EngExtCpp 拡張機能 DLLs これらは、engextcpp.h および dbgeng.h ヘッダー ファイルのプロトタイプに基づいています。 この種類の各 DLL は、DbgEng 拡張コマンドをエクスポートできます。 これらの拡張コマンドでは、デバッガー エンジン API と EngExtCpp 拡張フレームワークの両方が使用され、WdbgExts API を使用することもできます。

  • WdbgExts 拡張 DLLs これらは、wdbgexts.h ヘッダー ファイル内のプロトタイプに基づいています。 この種類の各 DLL は、1 つ以上の WdbgExts 拡張コマンドをエクスポートします。 これらの拡張コマンドでは、WdbgExts API のみを使用します。 詳細については、「DbgEng 拡張機能の作成」を参照してください。

DbgEng API を使用して、拡張機能またはスタンドアロン アプリケーションを作成できます。 WdbgExts API には、デバッガ エンジン API の機能のサブセットが含まれており、拡張機能によってのみ使用できます。

すべてのデバッガー拡張機能は、Visual Studio を使用してコンパイルおよびビルドする必要があります。

カスタム インストールを実行し、SDK コンポーネントとそのすべてのサブコンポーネントを選択した場合、拡張コード サンプルは Debugging Tools for Windows パッケージの一部としてインストールされます。 これらは、Debugging Tools for Windows インストール ディレクトリの sdk\samples サブディレクトリにあります。

新しいデバッガー拡張機能を記述する最も簡単な方法は、サンプル拡張機能を調査することです。 各サンプル拡張機能には、ビルド ユーティリティで使用するメイクファイルとソース ファイルが含まれています。 どちらの種類の拡張機能もサンプルで表されます。

カスタム分析デバッガー拡張機能の作成

分析拡張機能プラグインを記述することにより、!analyze デバッガー コマンドの機能を拡張できます。 分析拡張機能プラグインを提供することにより、独自のコンポーネントまたはアプリケーションに固有の方法でバグ チェックまたは例外の分析に参加できます。 分析拡張機能プラグインを記述するときは、プラグインを呼び出す状況を記述するメタデータ ファイルも記述します。 !analyze を実行すると、適切な分析拡張機能プラグインが検索、読み込み、実行されます。 詳細については、「カスタム分析デバッガー拡張機能の作成」を参照してください 。

DML を使用したデバッガー出力のカスタマイズ

DML を使用してデバッガーの出力をカスタマイズできます。 詳細については、「DML を使用したデバッガー出力のカスタマイズ」を参照してください。

JavaScript を使用してデバッガーの機能を拡張する

JavaScript を使用して、デバッガー オブジェクトを理解し、デバッガーの機能を拡張およびカスタマイズするスクリプトを作成します。 JavaScript プロバイダーは、スクリプト言語をデバッガーの内部オブジェクト モデルに橋渡しします。 JavaScript デバッガー スクリプト プロバイダーでは、デバッガーで JavaScript を使用できます。 詳細については、「JavaScript デバッガースクリプト」を参照してください。

KDNETトランスポート拡張モジュールの開発

KDNET は、別のハードウェア ドライバー拡張モジュール dll を使用して、任意のハードウェアで実行するように拡張できる唯一のトランスポートです。 KDNET トランスポート拡張モジュールは、特定のネットワーク カードにカーネル デバッグのサポートを追加するために、ネットワーク カード ベンダーによって開発されています。

KDNET は、ネットワーク経由でのウィンドウのカーネル デバッグを可能にするカーネル デバッグ トランスポートです。 これは、ハードウェア サポート層が、ネットワーク パケット処理およびカーネル インターフェイス層とは別のモジュールに組み込まれるように設計されています。 このハードウェア ドライバーサポート層は、KDNET 拡張モジュールと呼ばれます。 詳細については、KDNET トランスポート拡張モジュールの開発を参照してください