Debugger インターフェイス

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

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

構文

'宣言
<GuidAttribute("338FB9A0-BAE5-11D2-8AD1-00C04F79E479")> _
Public Interface Debugger
[GuidAttribute("338FB9A0-BAE5-11D2-8AD1-00C04F79E479")]
public interface Debugger
[GuidAttribute(L"338FB9A0-BAE5-11D2-8AD1-00C04F79E479")]
public interface class Debugger
[<GuidAttribute("338FB9A0-BAE5-11D2-8AD1-00C04F79E479")>]
type Debugger =  interface end
public interface Debugger

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

プロパティ

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

このページのトップへ

メソッド

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

このページのトップへ

解説

デバッガーは、以下の例に示すように、Debugger プロパティを使用して DTE オブジェクトを通じて利用できます。 各開発環境で 1 つのデバッガー オブジェクトを利用できます。

Debugger オブジェクトの使用方法を次の例に示します。

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 EnvDTE.Debugger
        debugger = DTE.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 small 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 EnvDTE;

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(&pDebugger)) && pDebugger != NULL){
                dbgDebugMode mode;
                if (SUCCEEDED(pDebugger->get_CurrentMode(&mode))) {
                    if (mode != dbgDesignMode) {
                        printf("Debugger is active.\n");
                        nRet = 1;
                    }
                    else {
                        printf("Debugger is not active.\n");
                    }
                }
            }
        }
    }

    CoUninitialize();

    return nRet;
}

参照

関連項目

EnvDTE 名前空間

その他の技術情報

オートメーション オブジェクト モデルの階層図

Visual Studio でのデバッグ