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 | 중단 모드에서 프로그램을 디버깅하는 경우 이 함수는 현재 디버깅 세션에 대한 미니덤프를 만듭니다. |
위쪽
설명
디버거는 아래 예제에서와 같이 해당 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;
}