デバッガー エンジンの基本

このドキュメントでは、デバッガー エンジンを使用する方法と、WinDbg、KD、CDB、および NTSD で実行される拡張機能を記述する方法について説明します。 これらのデバッガー拡張機能は、Microsoft Windows でユーザー モードまたはカーネル モードのデバッグを実行するときに使用できます。

デバッガー エンジン

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

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

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

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

不完全なドキュメント

これは暫定的なドキュメントであり、現在は不完全です。

ここにまだ記載されていないデバッガーとデバッガー エンジンに関連する多くの概念については、このドキュメントの 「デバッグ手法 」セクションを参照してください。

デバッガー エンジン API の現在文書化されていない機能の一部を取得するには、Execute メソッドを使用して個々のデバッガー コマンドを実行します。

拡張機能

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

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

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

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

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

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

すべてのデバッガー拡張機能は、ビルド ユーティリティを使用してコンパイルおよびビルドする必要があります。 ビルド ユーティリティは、Windows Driver Kit (WDK) に含まれています。

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

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

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

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

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

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

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

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