Debugger2 インターフェイス

Debugger2 オブジェクトを使用すると、デバッガーの状態やデバッグ中のプログラムの状態を問い合わせたり、操作したりできます。 Debugger2 オブジェクトは、Debugger オブジェクトよりも優先されます。

名前空間:  EnvDTE80
アセンブリ:  EnvDTE80 (EnvDTE80.dll 内)

構文

'宣言
<GuidAttribute("8B5E2BFD-4642-4EFE-8AF4-0B2DA9AAA23C")> _
Public Interface Debugger2 _
    Inherits Debugger
[GuidAttribute("8B5E2BFD-4642-4EFE-8AF4-0B2DA9AAA23C")]
public interface Debugger2 : Debugger
[GuidAttribute(L"8B5E2BFD-4642-4EFE-8AF4-0B2DA9AAA23C")]
public interface class Debugger2 : Debugger
[<GuidAttribute("8B5E2BFD-4642-4EFE-8AF4-0B2DA9AAA23C")>]
type Debugger2 =  
    interface 
        interface Debugger 
    end
public interface Debugger2 extends Debugger

Debugger2 型で公開されるメンバーは以下のとおりです。

プロパティ

  名前 説明
パブリック プロパティ AllBreakpointsLastHit 最後に同時にヒットした、バインドされているブレークポイントのコレクションを取得します。
パブリック プロパティ BreakpointLastHit 最新のブレークポイント ヒットを取得します。
パブリック プロパティ Breakpoints ブレークポイントのコレクションを取得します。
パブリック プロパティ CurrentMode IDE のコンテキストのデバッガーの現在のモードを取得します。
パブリック プロパティ CurrentProcess アクティブなプロセスを取得するか、または設定します。
パブリック プロパティ CurrentProgram アクティブなプログラムを設定するか、または返します。
パブリック プロパティ CurrentStackFrame 現在のスタック フレームを取得するか、または設定します。
パブリック プロパティ CurrentThread デバッグ中の現在のスレッドを取得するか、または設定します。
パブリック プロパティ DebuggedProcesses 現在デバッグ中のプロセスのリストを取得します。
パブリック プロパティ DTE トップレベルの機能拡張オブジェクトを取得します。
パブリック プロパティ HexDisplayMode 式を 16 進形式と 10 進形式のどちらの形式で出力するかを示す値を取得または設定します。
パブリック プロパティ HexInputMode 式を 16 進形式と 10 進形式のどちらの形式で評価するかを示す値を取得または設定します。
パブリック プロパティ Languages デバッガーがサポートしている言語のリストを取得します。
パブリック プロパティ LastBreakReason 最後にプログラムが中断されたときの原因を取得します。プログラムが実行中の場合は、DBG_REASON_NONE を返します。
パブリック プロパティ LocalProcesses このコンピューター上で現在実行されているプロセスのリストを取得します。
パブリック プロパティ Parent Debugger2 オブジェクト (DTE2) の直接の親オブジェクトを取得します。
パブリック プロパティ Transports サポートされているデバッグ トランスポートのコレクションを取得します。

このページのトップへ

メソッド

  名前 説明
パブリック メソッド Break 指定されたプロセスの現在の状態を解析するために、そのプロセスの実行を一時中断します。
パブリック メソッド DetachAll すべてのアタッチしたプログラムからデタッチします。
パブリック メソッド ExecuteStatement 指定されたステートメントを実行します。TreatAsExpression フラグが true の場合、文字列は式として解釈され、コマンド ウィンドウ に出力が送られます。
パブリック メソッド GetExpression 現在のスタック フレームに基づいた式を評価します。式が解析はできるが評価できない場合、オブジェクトは返されますが、そのオブジェクトに有効な値は含まれていません。
パブリック メソッド GetExpression2 現在のスタック フレームに基づいた式を評価します。式が解析はできるが評価できない場合、オブジェクトは返されますが、そのオブジェクトに有効な値は含まれていません。
パブリック メソッド GetProcesses 呼び出し元がリモート コンピューターからプロセスのコレクションを取得できるようにします。
パブリック メソッド Go 現在のステートメントからプログラムを実行します。
パブリック メソッド RunToCursor ソース ファイル カーソルの現在位置でプログラムを実行します。
パブリック メソッド SetNextStatement 現在のソース ファイルのカーソル位置に従って、次に実行する命令を設定します。
パブリック メソッド StepInto 可能な場合は、次の関数呼び出しにステップ インします。
パブリック メソッド StepOut 現在実行中の関数から抜けます。
パブリック メソッド StepOver 次の関数呼び出しにステップ オーバーします。
パブリック メソッド Stop デバッグを中断し、アタッチされたすべてのプロセスを終了またはデタッチします。
パブリック メソッド TerminateAll 現在実行されているデバッグ プロセスをすべて終了します。
パブリック メソッド WriteMinidump プログラムを中断モードで実行している場合、この関数は現在のデバッグ セッションのミニダンプを作成します。

このページのトップへ

解説

デバッガーは、次の例に示すように、DTE2 オブジェクトの Debugger プロパティから利用できます。 各開発環境で 1 つのデバッガー オブジェクトを利用できます。

Imports EnvDTE
Imports System.Diagnostics

Public Module Module1
    'This function returns true if the debugger is actively debugging.

    Function IsDebugging() As Boolean
        Dim debugger As EnvDTE80.Debugger2 
        debugger = DTE2.Debugger

        If (debugger Is Nothing) Then
            MsgBox("Debugger doesn't exist! Fatal error.")
            IsDebugging = false
        Else
            IsDebugging = (debugger.CurrentMode <> _
            dbgDebugMode.dbgDesignMode)
        End If
    End Function
End Module
// The following C++ program can be run from the command line.
// It detects whether an instance of Visual Studio is currently 
// running,and if so, prints a message stating whether its debugger
// is actively debugging.

#include <stdio.h>
#import "dte.olb" raw_interfaces_only named_guids
using namespace EnvDTE80;
int main(void)
{
    int nRet = 0;
    CoInitialize(NULL);
    IUnknownPtr pUnk;
    GetActiveObject(CLSID_DTE, NULL, &pUnk);
    if (pUnk == NULL) {
        printf ("No instance of Visual Studio is running.\n");
    }
    else {
        _DTEPtr pDTE = pUnk;
        if (pDTE) {
            DebuggerPtr pDebugger;
            if (SUCCEEDED(pDTE->get_Debugger(&pDebugger2)) && 
            pDebugger2
            != NULL){
                dbgDebugMode mode;
                if (SUCCEEDED(pDebugger2->get_CurrentMode(&mode))) {
                    if (mode != dbgDesignMode) {
                        printf("Debugger is active.\n");
                        nRet = 1;
                    }
                    else {
                        printf("Debugger is not active.\n");
                    }
                }
            }
        }
    }
    CoUninitialize();
    return nRet;
}

参照

関連項目

EnvDTE80 名前空間