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(통합 개발 환경) 컨텍스트 내에서 디버거의 현재 모드를 가져옵니다. | |
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 개체를 통해 디버거를 사용할 수 있습니다. 개발 환경의 각 인스턴스마다 디버거 개체 하나를 사용할 수 있습니다.
예제
다음 예제에서는 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;
}