次のインターフェイスは、Visual Studio SDK を使用してデバッガーを拡張するためのコア インターフェイスです。
考察 (Discussion)
これらのインターフェイスは、主にデバッグ エンジン (DE) を作成するために使用されます。 それらをここでカテゴリ別に整理しています。
-
インターフェイスを実装できるエンティティは:
デバッグ エンジン (DE)
ポート サプライヤー (PS)
式エバリュエーター (EE)
Visual Studio (VS)
ブレークポイント
これらのインターフェイスは、ブレークポイントの実装と追跡に関連しています。
| インターフェイス | 実装先 | 説明 |
|---|---|---|
| IDebugBoundBreakpoint2 | DE | メモリの場所にバインドされたブレークポイントを表します。 |
| IDebugBreakpointBoundEvent2 | DE | ブレークポイントがメモリの場所にバインドされたときに、DE によって送信されます。 |
| IDebugBreakpointChecksumRequest2 | VS | ブレークポイント要求のドキュメント チェックサムを表します。 |
| IDebugBreakpointErrorEvent2 | DE | ブレークポイントをメモリの場所にバインドできなかった場合に、DE によって送信されます。 |
| IDebugBreakpointEvent2 | DE | ブレークポイントに到達したときに、DE によって送信されます。 |
| IDebugBreakpointRequest2 | VS | ブレークポイントの要求を表します。保留中のブレークポイントの作成で使用されます。 |
| IDebugBreakpointRequest3 | VS | ブレークポイントの要求を表します。保留中のブレークポイントの作成で使用されます。 |
| IDebugBreakpointResolution2 | DE | ブレークポイントをバインドするために使用する情報を表します。 |
| IDebugBreakpointUnboundEvent2 | DE | ブレークポイントがメモリの場所からバインド解除されたときに、DE によって送信されます。 |
| IDebugErrorBreakpoint2 | DE | 無効なブレークポイント (IDebugBreakpointErrorEvent2 によって返される) を表します。 |
| IDebugErrorBreakpointResolution2 | DE | 無効なブレークポイントに関する解決情報を表します。 |
| IDebugFunctionPosition2 | DE | ブレークポイントが設定されている関数内の位置を表します。 |
| IDebugPendingBreakpoint2 | DE | バインドされるブレークポイントを表します。バインドされたブレークポイントの作成で使用されます。 |
| IEnumDebugBoundBreakpoints2 | DE | 一連のバインドされたブレークポイントに対する列挙を表します。 |
| IEnumDebugErrorBreakpoints2 | DE | メモリの場所にバインドできなかった一連のブレークポイントに対する列挙を表します。 |
コンテキスト
これらのインターフェイスは、デバッグ中のプログラム内のさまざまな種類のコンテキストを表します。
| インターフェイス | 実装先 | 説明 |
|---|---|---|
| IDebugCodeContext2 | DE | コード命令の開始位置を表します。 |
| IDebugCodeContext3 | DE | IDebugCodeContext2 インターフェイスを拡張し、モジュールおよびプロセス インターフェイスを取得できるようにします。 |
| IDebugDocumentContext2 | VS、DE | ドキュメント内の位置を表します。 |
| IDebugExpressionContext2 | DE | 式を評価するコンテキストを表します。 |
| IDebugMemoryContext2 | DE | バイトのコレクションのメモリ内の開始位置を表します。 |
| IDebugStackFrame2 | DE | ブレークポイントまたは例外のスタック フレーム コンテキストを表します。 |
| IDebugStackFrame3 | DE | ブレークポイントまたは例外のスタック フレーム コンテキストを表します。 |
| IEnumDebugCodeContexts2 | DE | 一連のコード コンテキストに対する列挙を表します。 |
コア サーバー
これらのインターフェイスは、プログラムがデバッグされているコンピューターを表します。 これらは Visual Studio によって実装されますが、デバッグ エンジンによって呼び出すことができます。
| インターフェイス | 実装先 | 説明 |
|---|---|---|
| IDebugCoreServer2 | VS | コンピューターに関する情報だけでなく、ポートとポート サプライヤーへのアクセスを提供します。 |
| IDebugCoreServer3 | VS | リモート デバッグをサポートする IDebugCoreServer2 を表します。 |
デバッグ エンジン
これらのインターフェイスは、デバッグ エンジンとそれらに関連付けられたイベントを表します。
| インターフェイス | 実装先 | 説明 |
|---|---|---|
| IDebugEngine2 | DE | カスタム デバッグ エンジンを表します。 |
| IDebugEngine3 | DE | シンボル、JustMyCode、および例外の読み込みをサポートするカスタム デバッグ エンジンを表します。 |
| IDebugEngineCreateEvent2 | DE | DE の新しい各インスタンスによって送信され、デバッグ タスクを処理する準備ができていることを示します。 |
| IDebugEngineLaunch2 | DE | プログラムの起動をサポートするカスタム デバッグ エンジンを表します。 |
| IDebugProgramEngines2 | DE、PS | 複数のデバッグ エンジンを処理するプログラム ノードを表します。 |
| IDebugQueryEngine2 | DE | SDM がスレッド、プログラム、またはスタック フレームからデバッグ エンジンへのインターフェイスを取得する方法を提供します。 |
ドキュメント
これらのインターフェイスは、ドキュメント (ソース ファイル) とそれらに関連付けられている要素を表します。
| インターフェイス | 実装先 | 説明 |
|---|---|---|
| IDebugActivateDocumentEvent2 | DE | ドキュメントを開くように要求するために、DE によって送信されます。 |
| IDebugDisassemblyStream2 | DE | ドキュメントからの逆アセンブル命令のストリームを表します。 |
| IDebugDocument2 | VS、DE | 名前とクラス ID (CLSID) を指定して、DE によって提供されるドキュメントを表します。 |
| IDebugDocumentChecksum2 | DE、EE | デバッグ ドキュメントのチェックサムを表し、コンポーネント間でチェックサムを渡せるようにします。 |
| IDebugDocumentContext2 | VS、DE | ドキュメント コンテキスト (特定のステートメントおよびコード コンテキストに対応するドキュメント内の位置) を表します。 |
| IDebugDocumentPosition2 | VS、DE | ドキュメント内の一般の位置を表します。 |
| IDebugDocumentPositionOffset2 | VS | 文字オフセットとしてソース ファイル内の位置を表します。 |
| IDebugDocumentText2 | VS、DE | DE によって提供されたテキスト ドキュメント (IDebugDocument2 から派生した) を表し、実際のテキストを提供します。 |
| IDebugDocumentTextEvents2 | DE | メモリ内のソース ファイルに対する変更を指定するために、DE によって送信されます。 |
[イベント]
これらのインターフェイスは、DE とセッション デバッグ マネージャー (SDM) の間で送信されるすべてのイベントを表します。
| インターフェイス | 実装先 | 説明 |
|---|---|---|
| IDebugActivateDocumentEvent2 | DE | ドキュメントを開くように要求するために、DE によって送信されます。 |
| IDebugBeforeSymbolSearchEvent2 | DE | デバッグ エンジン (DE) によって、このインターフェイスがセッション デバッグ マネージャー (SDM) に送信され、シンボルの読み込み時にステータス バー メッセージが設定されます。 |
| IDebugBreakEvent2 | DE | プログラム内の break が完了したときに、DE によって送信されます。 |
| IDebugBreakpointBoundEvent2 | DE | ブレークポイントがバインドされるときに、DE によって送信されます。 |
| IDebugBreakpointErrorEvent2 | DE | ブレークポイントのバインドに失敗したときに、DE によって送信されます。 |
| IDebugBreakpointEvent2 | DE | ブレークポイントに到達したときに、DE によって送信されます。 |
| IDebugBreakpointUnboundEvent2 | DE | ブレークポイントがバインド解除されるときに、DE によって送信されます。 |
| IDebugCanStopEvent2 | DE | 特定の場所で停止する必要があるかどうかを判断するために、DE によって送信されます。 |
| IDebugDocumentTextEvents2 | DE | メモリ内のソース ファイルに対する変更を指定するために、DE によって送信されます。 |
| IDebugEngineCreateEvent2 | DE | DE の新しい各インスタンスによって送信され、デバッグ タスクを処理する準備ができていることを示します。 |
| IDebugEntryPointEvent2 | DE | デバッグ中のプログラムが最初の命令を実行する準備ができていることを示すために、DE によって送信されます。 |
| IDebugErrorEvent2 | DE | 人が判読できるエラー メッセージを提供するために、エラーを返す可能性がある、他のイベント インターフェイスによって使用されるインターフェイス。 |
| IDebugEvent2 | DE、PS | 他のすべてのイベント インターフェイスの派生元となる基本インターフェイス。 |
| IDebugEventCallback2 | VS | イベント (特定のイベント インターフェイスを実装するオブジェクトとして表される) の送信先の SDM によって実装されるインターフェイスを表します。 |
| IDebugExceptionEvent2 | DE | デバッグ中のプログラムで例外が発生したときに、DE によって送信されます。 |
| IDebugExpressionEvaluationCompleteEvent2 | DE | 非同期式の評価が完了したときに、DE によって送信されます。 |
| IDebugFindSymbolEvent2 | 廃止。 使用しないでください。 | |
| IDebugInterceptExceptionCompleteEvent2 | DE | インターセプトされた例外の処理が完了したときに、DE によって送信されます。 |
| IDebugLoadCompleteEvent2 | DE | プログラムの読み込みが完了したときに、DE によって送信されます。 |
| IDebugMessageEvent2 | DE | IDE にユーザーに対して情報メッセージを表示させるために、DE によって送信されます。 |
| IDebugModuleLoadEvent2 | DE | モジュールが読み込まれたとき、またはアンロードされたときに、DE によって送信されます。 |
| IDebugNoSymbolsEvent2 | DE | Visual Studio デバッガー UI に信号を送り、起動された実行可能ファイルのシンボルが見つからなかったことをユーザーに警告します。 |
| IDebugOutputStringEvent2 | DE | IDE に任意の文字列を表示させるために、DE によって送信されます。 |
| IDebugPortEvents2 | VS、DE | ポート イベントを任意のリスナーに伝達するために、ポートによって送信されます。 |
| IDebugProcessCreateEvent2 | DE、PS | プロセスが作成されたときに、DE またはポートによって送信されます。 |
| IDebugProcessDestroyEvent2 | DE、PS | プロセスが破棄されたときに、DE またはポートによって送信されます。 |
| IDebugProgramCreateEvent2 | DE、PS | プログラムが作成されたときに、DE またはポートによって送信されます。 |
| IDebugProgramDestroyEvent2 | DE、PS | プログラムが破棄されたときに、DE またはポートによって送信されます。 |
| IDebugProgramDestroyEventFlags2 | DE | デバッグ セッションを終了するときに、デバッグ エンジンによって、Visual Studio UI の既定の動作をオーバーライドできるようにします。 |
| IDebugProgramNameChangedEvent2 | DE | プログラムの名前が変更されたときに、デバッグ エンジン (DE) からセッション デバッグ マネージャー (SDM) に送信されます。 |
| IDebugPropertyCreateEvent2 | DE | 新しいプロパティ (IDebugProperty2 インターフェイスによって表される) が作成されたときに、DE によって送信されます。 |
| IDebugPropertyDestroyEvent2 | DE | プロパティが破棄されたときに、DE によって送信されます。 |
| IDebugReturnValueEvent2 | DE | 戻り値を正しく表示できるように、関数のステップ アウトまたはステップ オーバー時に DE によって送信されます。 |
| IDebugSettingsCallback2 | VS | デバッグ エンジンが、リモートでメトリック設定を読み取れるようにします。 |
| IDebugStepCompleteEvent2 | DE | 命令のステップ イン、ステップ オーバー、またはステップ アウトが完了したときに、DE によって送信されます。 |
| IDebugSymbolSearchEvent2 | DE | モジュールのシンボルの読み込みの成功または失敗を示すために、DE によって送信されます。 |
| IDebugThreadCreateEvent2 | DE | スレッドが作成されたときに、DE によって送信されます。 |
| IDebugThreadDestroyEvent2 | DE | スレッドが破棄されたときに、DE によって送信されます。 |
| IDebugThreadNameChangedEvent2 | DE | スレッドの名前が変更されたときに、DE によって送信されます。 |
式
これらのインターフェイスは、特定のコンテキストで評価される式を表します。
| インターフェイス | 実装先 | 説明 |
|---|---|---|
| IDebugExpression2 | DE | 評価される式を表します。 IDebugExpressionContext2 インターフェイスから取得されます。 |
| IDebugExpressionContext2 | DE | 式が評価されるコンテキストを表します。 IDebugStackFrame2 インターフェイスから取得されます。 |
| IDebugExpressionEvaluationCompleteEvent2 | DE | 非同期式の評価が完了したときに、DE によって送信されます。 |
[メモリ]
これらのインターフェイスは、メモリ内のバイトのシーケンスを表します。
| インターフェイス | 実装先 | 説明 |
|---|---|---|
| IDebugMemoryBytes2 | DE | 読み取りまたは書き込みが可能なメモリ内のバイトのシーケンスを表します。 |
| IDebugMemoryContext2 | DE | バイトのシーケンスのメモリ内の場所を表します。 |
モジュール
これらのインターフェイスは、実行可能ファイルまたは .DLL ファイルに対応するモジュールを表します。
| インターフェイス | 実装先 | 説明 |
|---|---|---|
| IDebugModule2 | DE | 1 つの実行可能ファイルまたは DLL を表します。 |
| IDebugModule3 | DE | シンボルをサポートする IDebugModule2 を表します。 |
| IDebugModuleLoadEvent2 | DE | モジュールが読み込まれたとき、またはアンロードされたときに、DE によって送信されます。 |
| IDebugSourceServerModule | DE | PDB ファイルに格納されているソース サーバー情報を表します。 |
| IEnumDebugModules2 | DE | IDebugProgram2 によって認識される一連のモジュールに対する列挙を表します。 |
Port
これらのインターフェイスは、ポートとポート サプライヤーを表します。
| インターフェイス | 実装先 | 説明 |
|---|---|---|
| IDebugDefaultPort2 | VS、PS | ローカル コンピューターの既定のポートを表します。 |
| IDebugFirewallConfigurationCallback2 | VS | DCOM を使用して、ファイアウォールがリモート デバッグをブロックしないようにするために、デバッグ エンジンで Visual Studio UI に要求できるようにします。 |
| IDebugPort2 | VS、PS | ポートを表します。 |
| IDebugPortEvents2 | PS | ポート イベントを任意のリスナーに伝達するために、ポートによって送信されます。 |
| IDebugPortEx2 | PS | プロセスを起動および終了できるポートを表します。 |
| IDebugPortNotify2 | PS | プログラムをポートに登録および登録解除するために使用されます。ポートで現在デバッグ中のプログラムを追跡できるようにします。 |
| IDebugPortPicker | PS | ポートを選択するためのカスタマイズされた UI を表します。 |
| IDebugPortRequest2 | VS | 新しいポートが作成または配置されるポートの要求を表します。 |
| IDebugPortSupplier2 | PS | ポートのサプライヤーを表します。 |
| IDebugPortSupplier3 | PS | 作成したポートに関する情報を永続化 (ディスクに保存) できるポートのサプライヤーを表します。 |
| IDebugPortSupplierDescription2 | PS | [プロセスにアタッチ] ダイアログ ボックスの [トランスポート情報] セクション内のテキストを、Visual Studio UI で表示できるようにします。 |
| IDebugWindowsComputerPort2 | VS | 対象のコンピューターに関する情報のクエリを実行できるようにします。 |
| IEnumDebugPorts2 | VS、PS | 一連のポートに対する列挙を表します。 |
| IEnumDebugPortSuppliers2 | VS | 一連のポート サプライヤーに対する列挙を表します。 |
処理
これらのインターフェイスは、プロセス (1 つまたは複数のプログラムを含む 1 つの実行可能ファイル) を表します。
| インターフェイス | 実装先 | 説明 |
|---|---|---|
| IDebugProcess2 | PS、DE | コンピューターで実行されているプロセスを表します。 |
| IDebugProcess3 | PS、DE | デバッグをアクティブにサポートするプロセスを表します (IDebugProgram2 インターフェイスの Step、Continue、および Execute メソッドを置き換えるために使用されます)。 |
| IDebugProcessCreateEvent2 | DE、PS | プロセスが作成されたときに、DE またはポートによって送信されます。 |
| IDebugProcessDestroyEvent2 | DE、PS | プロセスが破棄されたときに、DE またはポートによって送信されます。 |
| IDebugProcessEx2 | PS | アタッチされているセッションを追跡する必要があるプロセスを表します。 |
| IEnumDebugProcesses2 | PS | ポート上の一連のプロセスの列挙を表します。 |
プログラム
これらのインターフェイスは、プログラム (必ずしも物理的な実行可能ファイルやモジュールに対応していない実行の論理ユニット) を表します。
| インターフェイス | 実装先 | 説明 |
|---|---|---|
| IDebugEngineProgram2 | DE | 同時にデバッグされている他のプログラムと連携して動作する必要がある IDebugProgram2 を表します。 |
| IDebugProgram2 | DE、PS | 実行の論理ユニットを表します。 |
| IDebugProgramCreateEvent2 | DE、PS | プログラムが作成されたときに、DE またはポートによって送信されます。 |
| IDebugProgramDestroyEvent2 | DE、PS | プログラムが破棄されたときに、DE またはポートによって送信されます。 |
| IDebugProgramEngines2 | DE、PS | 複数のデバッグ エンジンによって処理できる IDebugProgramNode2 を表します。 |
| IDebugProgramEx2 | PS | アタッチ先のセッションを追跡できる必要がある IDebugProgram2 を表します。 |
| IDebugProgramHost2 | DE、PS | 実行されているプロセスに関する情報を返すことができる IDebugProgram2 を表します。 |
| IDebugProgramNode2 | DE、PS | デバッグできるプログラムを表します。 |
| IDebugProgramNodeAttach2 | DE、PS | 関連付けられているプログラムへのアタッチの試みをプログラム ノードに通知できるようにします。 |
| IDebugProgramProvider2 | DE | SDM が、その DE によって制御されるプログラムに関する DE をクエリする方法を提供します。 |
| IDebugProgramPublisher2 | VS | プログラムを SDM に登録して、それらがデバッグ中であることを示すために、DE によって使用されます。 |
| IDebugProviderProgramNode2 | DE、PS | スレッドまたはプロセスの境界を越えてインターフェイスをマーシャリングできる IDebugProgramNode2 を表します。 |
| IEnumDebugPrograms2 | DE、PS | 一連のプログラムの列挙を表します。 |
プロパティ
これらのインターフェイスは、特定のコンテキストに関連付けられた値 (通常は式の評価の結果) を表します。
| インターフェイス | 実装先 | 説明 |
|---|---|---|
| IDebugCustomViewer | EE | カスタムの方法で値を表示できる IDebugProperty2 を表します。 |
| IDebugProperty2 | DE | スタック フレーム、ドキュメント、または式の評価の結果の値を表します。 |
| IDebugProperty3 | DE | 任意の長い文字列をサポートする IDebugProperty2 を表します。 |
| IDebugPropertyCreateEvent2 | DE | (IDebugProperty2 インターフェイスによって表される) 新しいプロパティが作成されたときに、DE によって送信されます。 |
| IDebugPropertyDestroyEvent2 | DE | プロパティが破棄されたときに、DE によって送信されます。 |
| IDebugReference2 | DE | 特定のスタック フレームの外部に存在する可能性があるプロパティへの参照を表します。 |
| IEnumDebugPropertyInfo2 | DE | 変数、レジスタ、パラメーター、および式を記述する一連の DEBUG_PROPERTY_INFO 構造体に対する列挙を表します。 |
| IEnumDebugReferenceInfo2 | DE | 一連の DEBUG_REFERENCE_INFO 構造体に対する列挙を表します。 |
スタック フレーム
これらのインターフェイスは、スタック フレーム (ブレークポイントまたは例外が発生したコンテキスト) を表します。
| インターフェイス | 実装先 | 説明 |
|---|---|---|
| IDebugStackFrame2 | DE | ブレークポイントまたは例外が発生したコンテキストを表します。 |
| IDebugStackFrame3 | DE | インターセプトされた例外を処理できる IDebugStackFrame2 を表します。 |
| IEnumCodePaths2 | DE | 特定のスタック フレームに到着するために使用される関数呼び出しシーケンスを指定する一連の CODE_PATH 構造体に対する列挙を表します。 |
| IEnumDebugFrameInfo2 | DE | スタック フレームを記述する一連の FRAMEINFO 構造体に対する列挙を表します。 |
スレッド
これらのインターフェイスは、スレッドとそれらに関連付けられたイベントを表します。
| インターフェイス | 実装先 | 説明 |
|---|---|---|
| IDebugThread2 | DE | 実行のスレッドを表します。 |
| IDebugThreadCreateEvent2 | DE | スレッドが作成されたときに、DE によって送信されます。 |
| IDebugThreadDestroyEvent2 | DE | スレッドが破棄されたときに、DE によって送信されます。 |
| IDebugThreadNameChangedEvent2 | DE | スレッドの名前が変更されたときに、DE によって送信されます。 |
| IEnumDebugThreads2 | DE | 一連のスレッドに対する列挙体を表します。 |
型ビジュアライザー
これらのインターフェイスは、型ビジュアライザーのサポートを提供します。 これらのインターフェイスは、一般に式エバリュエーターによって実装されます。
| インターフェイス | 実装先 | 説明 |
|---|---|---|
| IEEDataStorage | EE | 型ビジュアライザーに提示されるバイトの配列を表します。 |
| IPropertyProxyEESide | EE | 型ビジュアライザーに渡されるデータへのアクセスを取得するためのメソッドを提供します。 |
| IPropertyProxyProvider | EE | IPropertyProxyEESide 実装へのアクセスを提供するプロパティを表します。 |