다음을 통해 공유


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 형식에서는 다음과 같은 멤버를 노출합니다.

속성

  이름 설명
Public 속성 AllBreakpointsLastHit 마지막으로 동시에 적중한 바인딩된 중단점의 컬렉션을 가져옵니다.
Public 속성 BreakpointLastHit 마지막으로 적중한 중단점을 가져옵니다.
Public 속성 Breakpoints 중단점의 컬렉션을 가져옵니다.
Public 속성 CurrentMode IDE의 컨텍스트 내에서 디버거의 현재 모드를 가져옵니다.
Public 속성 CurrentProcess 활성 프로세스를 가져오거나 설정합니다.
Public 속성 CurrentProgram 활성 프로그램을 설정하거나 반환합니다.
Public 속성 CurrentStackFrame 현재 스택 프레임을 가져오거나 설정합니다.
Public 속성 CurrentThread 디버깅하고 있는 현재 스레드를 가져오거나 설정합니다.
Public 속성 DebuggedProcesses 현재 디버깅 중인 프로세스 목록을 가져옵니다.
Public 속성 DTE 최상위 확장성 개체를 가져옵니다.
Public 속성 HexDisplayMode 식을 16진수 형식으로 출력할지 10진수 형식으로 출력할지 나타내는 값을 가져오거나 설정합니다.
Public 속성 HexInputMode 식을 16진수 형식으로 계산할지 10진수 형식으로 계산할지 나타내는 값을 가져오거나 설정합니다.
Public 속성 Languages 디버거에서 지원하는 언어 목록을 가져옵니다.
Public 속성 LastBreakReason 프로그램이 멈춘 마지막 원인을 가져옵니다.프로그램이 실행되고 있으면 DBG_REASON_NONE을 반환합니다.
Public 속성 LocalProcesses 이 컴퓨터에서 현재 실행되고 있는 프로세스의 목록을 가져옵니다.
Public 속성 Parent Debugger2 개체(DTE2)의 바로 위 부모 개체를 가져옵니다.
Public 속성 Transports 지원되는 디버깅 전송의 컬렉션을 가져옵니다.

위쪽

메서드

  이름 설명
Public 메서드 Break 지정된 프로세스의 현재 상태를 분석할 수 있도록 프로세스의 실행을 일시 중지합니다.
Public 메서드 DetachAll 연결된 모든 프로그램에서 분리합니다.
Public 메서드 ExecuteStatement 지정한 문을 실행합니다.TreatAsExpression 플래그가 true이면 문자열이 식으로 해석되고 출력이 명령 창에 전달됩니다.
Public 메서드 GetExpression 현재 스택 프레임을 기초로 식을 계산합니다.식을 구문 분석할 수 있지만 식이 계산되지 않으면 유효한 값이 들어 있지 않은 개체가 반환됩니다.
Public 메서드 GetExpression2 현재 스택 프레임을 기초로 식을 계산합니다.식을 구문 분석할 수 있지만 식이 계산되지 않으면 유효한 값이 들어 있지 않은 개체가 반환됩니다.
Public 메서드 GetProcesses 호출자가 원격 컴퓨터에서 프로세스의 컬렉션을 가져올 수 있도록 합니다.
Public 메서드 Go 현재 문에서 프로그램 실행을 시작합니다.
Public 메서드 RunToCursor 소스 파일 커서의 현재 위치까지 프로그램을 실행합니다.
Public 메서드 SetNextStatement 현재 소스 파일에서 커서의 위치에 따라 실행될 다음 명령을 설정합니다.
Public 메서드 StepInto 가능한 경우 다음 함수 호출에 대해 한 단계씩 코드를 실행합니다.
Public 메서드 StepOut 현재 함수에서 나갑니다.
Public 메서드 StepOver 다음 함수 호출을 프로시저 단위로 실행합니다.
Public 메서드 Stop 디버깅을 중지하고 종료하거나 모든 연결된 프로세스에서 분리합니다.
Public 메서드 TerminateAll 현재 실행 중인 디버깅 프로세스를 모두 종료합니다.
Public 메서드 WriteMinidump 중단 모드에서 프로그램을 디버깅하는 경우 이 함수는 현재 디버깅 세션에 대한 미니덤프를 만듭니다.

위쪽

설명

디버거는 아래 예제에서와 같이 해당 Debugger 속성을 통해 DTE2 개체에서 사용할 수 있습니다. 개발 환경의 각 인스턴스마다 디버거 개체 하나를 사용할 수 있습니다.

예제

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 네임스페이스