다음을 통해 공유


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

속성

  이름 설명
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 Debugger 개체의 바로 위 부모 개체를 가져옵니다.

위쪽

메서드

  이름 설명
Public 메서드 Break 지정된 프로세스의 현재 상태를 분석할 수 있도록 프로세스의 실행을 일시 중지합니다.
Public 메서드 DetachAll 연결된 모든 프로그램에서 분리합니다.
Public 메서드 ExecuteStatement 지정한 문을 실행합니다.TreatAsExpression 플래그가 true이면 문자열이 식으로 해석되고 출력은 명령 창에 전달됩니다.
Public 메서드 GetExpression 현재 스택 프레임을 기반으로 식을 계산합니다.식을 구문 분석할 수는 있지만 계산할 수 없는 경우 개체가 반환되지만 올바른 값을 포함하지 않습니다.
Public 메서드 Go 현재 문에서 프로그램 실행을 시작합니다.
Public 메서드 RunToCursor 소스 파일의 현재 커서 위치까지 프로그램을 실행합니다.
Public 메서드 SetNextStatement 현재 소스 파일에서 커서의 위치에 따라 실행될 다음 명령을 설정합니다.
Public 메서드 StepInto 가능한 경우 다음 함수 호출에 대해 한 단계씩 코드를 실행합니다.
Public 메서드 StepOut 현재 함수 외부로 나갑니다.
Public 메서드 StepOver 다음 함수 호출을 프로시저 단위로 실행합니다.
Public 메서드 Stop 연결된 모든 프로세스에서 디버깅, 종료 또는 분리를 중지합니다.
Public 메서드 TerminateAll 모든 프로세스를 종료합니다.

위쪽

설명

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

예제

다음 예제에서는 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의 디버깅