このセクションには、次のものが含まれます。
デバッガー エンジン API を使用した
DbgEng Extensions の書き込み
WdbgExts 拡張機能 の書き込みの
JavaScript を使用してデバッガー の機能を拡張する
このドキュメントでは、デバッガー エンジンによって提供されるインターフェイスなどのインターフェイスを使用して、WinDbg、KD、CDB、NTSD で実行される拡張機能を記述する方法について説明します。 これらのデバッガー拡張機能は、ユーザー モードまたはカーネル モードのデバッグを実行するときに使用できます。
デバッガー エンジン
デバッガー エンジンには、ユーザー モードとカーネル モードでデバッグ ターゲットを調べて操作するためのインターフェイスが用意されています。
デバッガー エンジンは、ターゲットの取得、ブレークポイントの設定、イベントの監視、シンボルのクエリ、メモリの読み取りと書き込み、ターゲット内のスレッドとプロセスの制御を行うことができます。
デバッガー エンジンを使用して、デバッガー拡張機能ライブラリとスタンドアロン アプリケーションの両方を記述できます。 このようなアプリケーションは、デバッガー エンジン アプリケーション です。 デバッガー エンジンのすべての機能を使用するデバッガー エンジン アプリケーションは、デバッガーです。 たとえば、WinDbg、CDB、NTSD、KD はデバッガーです。デバッガー エンジンは、その機能のコアを提供します。
デバッガー エンジン API は、ヘッダー ファイル dbgeng.h のプロトタイプによって指定されます。
詳細については、「デバッガー エンジン API 使用したデバッガー エンジンの概要 と」を参照してください。
拡張機能
拡張 DLL を記述してビルドすることで、独自のデバッグ コマンドを作成できます。 たとえば、複雑なデータ構造を表示する拡張コマンドを記述できます。
デバッガー拡張機能 DLL には、次の 3 種類があります。
DbgEng 拡張 DLL。 これらは、dbgeng.h ヘッダー ファイル内のプロトタイプに基づいています。 この種類の各 DLL は、DbgEng 拡張コマンドをエクスポートできます。 これらの拡張機能コマンドはデバッガー エンジン API を使用し、WdbgExts API を使用することもできます。
詳細については、「DbgEng Extensions の作成」を参照してください。
EngExtCpp 拡張 DLL。 これらは、engextcpp.h および dbgeng.h ヘッダー ファイルのプロトタイプに基づいています。 この種類の各 DLL は、DbgEng 拡張コマンドをエクスポートできます。 これらの拡張コマンドでは、デバッガー エンジン API と EngExtCpp 拡張フレームワークの両方が使用され、WdbgExts API を使用することもできます。
WdbgExts 拡張 DLL をします。 これらは、wdbgexts.h ヘッダー ファイル内のプロトタイプに基づいています。 この種類の各 DLL は、1 つ以上の WdbgExts 拡張コマンドをエクスポートします。 これらの拡張コマンドでは、WdbgExts API のみを使用します。 詳細については、WdbgExts 拡張機能の の記述を参照してください。
DbgEng API を使用して、拡張機能またはスタンドアロン アプリケーションを作成できます。 WdbgExts API にはデバッガー エンジン API の機能のサブセットが含まれており、拡張機能でのみ使用できます。
すべてのデバッガー拡張機能は、Visual Studio を使用してコンパイルしてビルドする必要があります。
カスタム インストールを実行し、SDK コンポーネントとそのすべてのサブコンポーネントを選択すると、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 トランスポート拡張モジュールの開発を参照してください。