Core 인터페이스
다음 인터페이스는 Visual Studio SDK를 사용하여 디버거를 확장하기 위한 핵심 인터페이스입니다.
토론(Discussion)
이러한 인터페이스는 주로 DE(디버그 엔진)를 만드는 데 사용됩니다. 다음 범주에 따라 분류됩니다.
-
인터페이스를 구현할 수 있는 엔터티는 다음과 같습니다.
DE(디버그 엔진)
PS(포트 공급자)
EE(식 계산기)
VS(Visual Studio)
중단점
이러한 인터페이스는 중단점의 구현 및 추적과 관련이 있습니다.
인터페이스 | 구현자 | 설명 |
---|---|---|
IDebugBoundBreakpoint2 | DE | 메모리 위치에 바인딩된 중단점을 나타냅니다. |
IDebugBreakpointBoundEvent2 | DE | 중단점이 메모리 위치에 바인딩될 때 DE에 의해 전송됩니다. |
IDebugBreakpointChecksumRequest2 | VS | 중단점 요청에 대한 문서 체크섬을 나타냅니다. |
IDebugBreakpointErrorEvent2 | DE | 중단점이 메모리 위치에 바인딩되지 못할 때 DE에 의해 전송됩니다. |
IDebugBreakpointEvent2 | DE | 중단점에 도달하면 DE에 의해 전송됩니다. |
IDebugBreakpointRequest2 | VS | 중단점 요청을 나타내며, 보류 중인 중단점을 만드는 데 사용됩니다. |
IDebugBreakpointRequest3 | VS | 중단점 요청을 나타내며, 보류 중인 중단점을 만드는 데 사용됩니다. |
IDebugBreakpointResolution2 | DE | 중단점을 바인딩하는 데 사용되는 정보를 나타냅니다. |
IDebugBreakpointUnboundEvent2 | DE | 중단점이 메모리 위치에서 바인딩 해제될 때 DE에 의해 전송됩니다. |
IDebugErrorBreakpoint2 | DE | 잘못된 중단점(IDebugBreakpointErrorEvent2 에 의해 반환됨)을 나타냅니다. |
IDebugErrorBreakpointResolution2 | DE | 잘못된 중단점에 대한 해결 정보를 나타냅니다. |
IDebugFunctionPosition2 | DE | 중단점이 설정된 함수 위치를 나타냅니다. |
IDebugPendingBreakpoint2 | DE | 바인딩할 중단점을 나타내며, 바인딩된 중단점을 만드는 데 사용됩니다. |
IEnumDebugBoundBreakpoints2 | DE | 바인딩된 중단점 세트에 대한 열거형을 나타냅니다. |
IEnumDebugErrorBreakpoints2 | DE | 메모리 위치에 바인딩할 수 없는 중단점 세트에 대한 열거형을 나타냅니다. |
컨텍스트
이러한 인터페이스는 디버그 중인 프로그램 내에서 다양한 종류의 컨텍스트를 나타냅니다.
인터페이스 | 구현자 | 설명 |
---|---|---|
IDebugCodeContext2 | DE | 코드 명령의 시작 위치를 나타냅니다. |
IDebugCodeContext3 | DE | IDebugCodeContext2 인터페이스를 확장하여 모듈 및 프로세스 인터페이스를 검색할 수 있도록 합니다. |
IDebugDocumentContext2 | VS, DE | 문서에서의 위치를 나타냅니다. |
IDebugExpressionContext2 | DE | 식을 평가할 컨텍스트를 나타냅니다. |
IDebugMemoryContext2 | DE | 바이트 컬렉션 메모리의 시작 위치를 나타냅니다. |
IDebugStackFrame2 | DE | 중단점 또는 예외의 스택 프레임 컨텍스트를 나타냅니다. |
IDebugStackFrame3 | DE | 중단점 또는 예외의 스택 프레임 컨텍스트를 나타냅니다. |
IEnumDebugCodeContexts2 | DE | 코드 컨텍스트 세트에 대한 열거형을 나타냅니다. |
핵심 서버
이러한 인터페이스는 프로그램을 디버그 중인 컴퓨터를 나타냅니다. Visual Studio에서 구현되지만 디버그 엔진으로 호출할 수 있습니다.
인터페이스 | 구현자 | 설명 |
---|---|---|
IDebugCoreServer2 | VS | 포트 및 포트 공급자에 대한 액세스뿐만 아니라 컴퓨터에 대한 정보를 제공합니다. |
IDebugCoreServer3 | VS | 원격 디버깅을 지원하는 IDebugCoreServer2를 나타냅니다. |
디버그 엔진
이러한 인터페이스는 디버그 엔진 및 관련 이벤트를 나타냅니다.
인터페이스 | 구현자 | 설명 |
---|---|---|
IDebugEngine2 | DE | 사용자 지정 디버그 엔진을 나타냅니다. |
IDebugEngine3 | DE | 기호, JustMyCode 및 예외에 대한 로드를 지원하는 사용자 지정 디버그 엔진을 나타냅니다. |
IDebugEngineCreateEvent2 | DE | 디버깅 작업을 처리할 준비가 되었음을 나타내기 위해 DE의 각 새 인스턴스에서 전송됩니다. |
IDebugEngineLaunch2 | DE | 프로그램 시작을 지원하는 사용자 지정 디버그 엔진을 나타냅니다. |
IDebugProgramEngines2 | DE, PS | 여러 디버그 엔진을 처리하는 프로그램 노드를 나타냅니다. |
IDebugQueryEngine2 | DE | SDM이 스레드, 프로그램 또는 스택 프레임에서 디버그 엔진에 대한 인터페이스를 가져오는 방법을 제공합니다. |
문서
이러한 인터페이스는 문서(원본 파일) 및 관련 요소를 나타냅니다.
인터페이스 | 구현자 | 설명 |
---|---|---|
IDebugActivateDocumentEvent2 | DE | 문서를 열도록 요청하기 위해 DE에서 전송됩니다. |
IDebugDisassemblyStream2 | DE | 문서에서 디스어셈블된 명령의 스트림을 나타냅니다. |
IDebugDocument2 | VS, DE | 이름 및 CLSID(클래스 ID)를 지정하는 DE에서 제공된 문서를 나타냅니다. |
IDebugDocumentChecksum2 | DE, EE | 디버그 문서의 체크섬을 나타내며 구성 요소 간에 체크섬을 전달할 수 있습니다. |
IDebugDocumentContext2 | VS, DE | 문서 컨텍스트, 특정 문 및 코드 컨텍스트에 해당하는 문서 내의 위치를 나타냅니다. |
IDebugDocumentPosition2 | VS, DE | 문서 내의 일반 위치를 나타냅니다. |
IDebugDocumentPositionOffset2 | VS | 소스 파일의 위치를 문자 오프셋으로 나타냅니다. |
IDebugDocumentText2 | VS, DE | 실제 텍스트를 제공하는 DE에서 제공하는 텍스트 문서(IDebugDocument2에서 파생됨)를 나타냅니다. |
IDebugDocumentTextEvents2 | DE | 메모리에 있는 원본 파일의 변경 내용을 지정하기 위해 DE에서 전송됩니다. |
이벤트
이러한 인터페이스는 DE와 SDM(세션 디버그 관리자) 간에 전송되는 모든 이벤트를 나타냅니다.
인터페이스 | 구현자 | 설명 |
---|---|---|
IDebugActivateDocumentEvent2 | DE | 문서를 열도록 요청하기 위해 DE에서 전송됩니다. |
IDebugBeforeSymbolSearchEvent2 | DE | DE(디버그 엔진)는 이 인터페이스를 SDM(세션 디버그 관리자)에 보내 기호를 로드하는 동안 상태 표시줄 메시지를 설정합니다. |
IDebugBreakEvent2 | DE | 프로그램에서 중단이 완료되면 DE에서 전송됩니다. |
IDebugBreakpointBoundEvent2 | DE | 중단점에 도달하면 DE에서 전송됩니다. |
IDebugBreakpointErrorEvent2 | DE | 중단점이 바인딩되지 않을 때 DE에서 전송됩니다. |
IDebugBreakpointEvent2 | DE | 중단점에 도달하면 DE에 의해 전송됩니다. |
IDebugBreakpointUnboundEvent2 | DE | 중단점이 바인딩되지 않았을 때 DE에서 전송됩니다. |
IDebugCanStopEvent2 | DE | 특정 위치에서 중지해야 하는지 여부를 결정하기 위해 DE에서 전송됩니다. |
IDebugDocumentTextEvents2 | DE | 메모리에 있는 원본 파일의 변경 내용을 지정하기 위해 DE에서 전송됩니다. |
IDebugEngineCreateEvent2 | DE | 디버깅 작업을 처리할 준비가 되었음을 나타내기 위해 DE의 각 새 인스턴스에서 전송됩니다. |
IDebugEntryPointEvent2 | DE | 디버그 중인 프로그램이 첫 번째 명령을 실행할 준비가 되었음을 나타내기 위해 DE에서 전송됩니다. |
IDebugErrorEvent2 | DE | 사람이 읽을 수 있는 오류 메시지를 제공하기 위해 오류를 반환할 수 있는 다른 이벤트 인터페이스에서 사용되는 인터페이스입니다. |
IDebugEvent2 | DE, PS | 다른 모든 이벤트 인터페이스가 파생되는 기본 인터페이스입니다. |
IDebugEventCallback2 | VS | 이벤트(특정 이벤트 인터페이스를 구현하는 개체로 표시됨)가 전송되는 SDM이 구현하는 인터페이스를 나타냅니다. |
IDebugExceptionEvent2 | DE | 디버그 중인 프로그램에서 예외가 발생한 경우 DE에서 전송됩니다. |
IDebugExpressionEvaluationCompleteEvent2 | DE | 비동기 식 계산이 완료되면 DE에서 전송됩니다. |
IDebugFindSymbolEvent2 | 사용되지 않습니다. 사용하지 마십시오. | |
IDebugInterceptExceptionCompleteEvent2 | DE | 가로챈 예외에 대한 처리가 완료된 경우 DE에서 전송됩니다. |
IDebugLoadCompleteEvent2 | DE | 프로그램 로드가 완료되면 DE에서 전송됩니다. |
IDebugMessageEvent2 | DE | IDE가 사용자에게 정보 메시지를 표시하도록 DE에서 전송됩니다. |
IDebugModuleLoadEvent2 | DE | 모듈이 로드되거나 언로드될 때 DE에서 전송됩니다. |
IDebugNoSymbolsEvent2 | DE | Visual Studio 디버거 UI에 신호를 보내 시작된 실행 파일에 대한 기호를 찾을 수 없음을 사용자에게 경고합니다. |
IDebugOutputStringEvent2 | DE | IDE가 임의의 문자열을 표시하도록 DE에서 전송됩니다. |
IDebugPortEvents2 | VS, DE | 모든 수신기에 포트 이벤트를 통신하기 위해 포트에서 전송됩니다. |
IDebugProcessCreateEvent2 | DE, PS | 프로세스가 생성되었을 때 DE 또는 포트에서 전송됩니다. |
IDebugProcessDestroyEvent2 | DE, PS | 프로세스가 삭제되었을 때 DE 또는 포트에서 전송됩니다. |
IDebugProgramCreateEvent2 | DE, PS | 프로그램이 생성되었을 때 DE 또는 포트에서 전송됩니다. |
IDebugProgramDestroyEvent2 | DE, PS | 프로그램이 삭제되었을 때 DE 또는 포트에서 전송됩니다. |
IDebugProgramDestroyEventFlags2 | DE | 디버그 세션을 종료할 때 디버그 엔진이 Visual Studio UI의 기본 동작을 재정의할 수 있도록 합니다. |
IDebugProgramNameChangedEvent2 | DE | 프로그램 이름이 변경되면 DE(디버그 엔진)에서 SDM(세션 디버그 관리자)로 전송됩니다. |
IDebugPropertyCreateEvent2 | DE | 새 속성(IDebugProperty2 인터페이스로 표시됨)이 생성되었을 때 DE에서 전송됩니다. |
IDebugPropertyDestroyEvent2 | DE | 속성이 삭제되었을 때 DE에서 전송됩니다. |
IDebugReturnValueEvent2 | DE | 반환 값을 올바르게 표시할 수 있도록 함수 나가기 또는 함수 단위 실행을 수행할 DE에서 전송됩니다. |
IDebugSettingsCallback2 | VS | 디버그 엔진이 메트릭 설정을 원격으로 읽을 수 있도록 합니다. |
IDebugStepCompleteEvent2 | DE | 명령에 대한 한 단계씩 실행, 단위 실행 또는 나가기가 완료되었을 때 DE에서 전송됩니다. |
IDebugSymbolSearchEvent2 | DE | 모듈에 대한 기호 로드의 성공 또는 실패를 나타내기 위해 DE에서 전송됩니다. |
IDebugThreadCreateEvent2 | DE | 스레드가 생성되었을 때 DE에서 전송됩니다. |
IDebugThreadDestroyEvent2 | DE | 스레드가 삭제되었을 때 DE에서 전송됩니다. |
IDebugThreadNameChangedEvent2 | DE | 스레드가 해당 이름을 변경했을 때 DE에서 전송됩니다. |
식
이러한 인터페이스는 특정 컨텍스트에서 평가할 식을 나타냅니다.
인터페이스 | 구현자 | 설명 |
---|---|---|
IDebugExpression2 | DE | 평가할 식을 나타냅니다. IDebugExpressionContext2 인터페이스에서 가져옵니다. |
IDebugExpressionContext2 | DE | 식이 평가되는 컨텍스트를 나타냅니다. IDebugStackFrame2 인터페이스에서 가져옵니다. |
IDebugExpressionEvaluationCompleteEvent2 | DE | 비동기 식 계산이 완료되면 DE에서 전송됩니다. |
메모리
이러한 인터페이스는 메모리의 바이트 시퀀스를 나타냅니다.
인터페이스 | 구현자 | 설명 |
---|---|---|
IDebugMemoryBytes2 | DE | 메모리에서 읽거나 쓸 수 있는 바이트 시퀀스를 나타냅니다. |
IDebugMemoryContext2 | DE | 메모리에서 바이트 시퀀스의 위치를 나타냅니다. |
모듈
이러한 인터페이스는 실행 파일 또는 .DLL 파일에 해당하는 모듈을 나타냅니다.
인터페이스 | 구현자 | 설명 |
---|---|---|
IDebugModule2 | DE | 단일 실행 파일 또는 DLL을 나타냅니다. |
IDebugModule3 | DE | 기호를 지원하는 IDebugModule2를 나타냅니다. |
IDebugModuleLoadEvent2 | DE | 모듈이 로드되거나 언로드될 때 DE에서 전송됩니다. |
IDebugSourceServerModule | DE | PDB 파일에 포함된 원본 서버 정보를 나타냅니다. |
IEnumDebugModules2 | DE | IDebugProgram2로 알려진 모듈 세트에 대한 열거형을 나타냅니다. |
Ports
이러한 인터페이스는 포트 및 포트 공급자를 나타냅니다.
인터페이스 | 구현자 | 설명 |
---|---|---|
IDebugDefaultPort2 | VS, PS | 로컬 컴퓨터의 기본 포트를 나타냅니다. |
IDebugFirewallConfigurationCallback2 | VS | DCOM을 사용하여 Visual Studio UI에 방화벽이 원격 디버깅을 차단하지 않도록 요청하는 디버그 엔진을 사용하도록 설정합니다. |
IDebugPort2 | VS, PS | 포트를 나타냅니다. |
IDebugPortEvents2 | PS | 모든 수신기에 포트 이벤트를 통신하기 위해 포트에서 전송됩니다. |
IDebugPortEx2 | PS | 프로세스를 시작하고 종료할 수 있는 포트를 나타냅니다. |
IDebugPortNotify2 | PS | 포트를 사용하여 프로그램을 등록 및 등록 해제하는 데 사용됩니다. 포트가 현재 디버그 중인 프로그램을 추적할 수 있습니다. |
IDebugPortPicker | PS | 포트를 선택하기 위한 사용자 지정된 UI를 나타냅니다. |
IDebugPortRequest2 | VS | 새 포트를 만들거나 배치할 포트에 대한 요청을 나타냅니다. |
IDebugPortSupplier2 | PS | 포트 공급자를 나타냅니다. |
IDebugPortSupplier3 | PS | 생성된 포트에 대한 정보를 유지(디스크에 저장)할 수 있는 포트 공급자를 나타냅니다. |
IDebugPortSupplierDescription2 | PS | Visual Studio UI가 프로세스에 연결 대화 상자의 전송 정보 섹션 내에서 텍스트를 표시할 수 있도록 합니다. |
IDebugWindowsComputerPort2 | VS | 대상 컴퓨터에 대한 정보를 쿼리할 수 있습니다. |
IEnumDebugPorts2 | VS, PS | 포트 세트에 대한 열거형을 나타냅니다. |
IEnumDebugPortSuppliers2 | VS | 포트 공급자 세트에 대한 열거형을 나타냅니다. |
프로세스
이러한 인터페이스는 하나 이상의 프로그램을 포함하는 단일 실행 파일인 프로세스를 나타냅니다.
인터페이스 | 구현자 | 설명 |
---|---|---|
IDebugProcess2 | PS, DE | 원격 컴퓨터에서 실행 중인 프로세스를 나타냅니다. |
IDebugProcess3 | PS, DE | 디버깅을 적극적으로 지원하는 프로세스를 나타냅니다(IDebugProgram2 인터페이스에서 Step, Continue 및 Execute 메서드 대신 사용). |
IDebugProcessCreateEvent2 | DE, PS | 프로세스가 생성되었을 때 DE 또는 포트에서 전송됩니다. |
IDebugProcessDestroyEvent2 | DE, PS | 프로세스가 삭제되었을 때 DE 또는 포트에서 전송됩니다. |
IDebugProcessEx2 | PS | 연결된 세션을 추적해야 하는 프로세스를 나타냅니다. |
IEnumDebugProcesses2 | PS | 포트에 있는 프로세스 세트에 대한 열거형을 나타냅니다. |
프로그램
이러한 인터페이스는 실제 실행 파일 또는 모듈에 반드시 해당할 필요가 없는 프로그램, 논리적 실행 단위를 나타냅니다.
인터페이스 | 구현자 | 설명 |
---|---|---|
IDebugEngineProgram2 | DE | 동시에 디버그되는 다른 프로그램과 함께 작동해야 하는 IDebugProgram2를 나타냅니다. |
IDebugProgram2 | DE, PS | 논리적 실행 단위를 나타냅니다. |
IDebugProgramCreateEvent2 | DE, PS | 프로그램이 생성되었을 때 DE 또는 포트에서 전송됩니다. |
IDebugProgramDestroyEvent2 | DE, PS | 프로그램이 삭제되었을 때 DE 또는 포트에서 전송됩니다. |
IDebugProgramEngines2 | DE, PS | 여러 디버그 엔진에서 처리할 수 있는 IDebugProgramNode2를 나타냅니다. |
IDebugProgramEx2 | PS | 연결된 세션을 추적할 수 있어야 하는 IDebugProgram2를 나타냅니다. |
IDebugProgramHost2 | DE, PS | 실행 중인 프로세스에 대한 정보를 반환할 수 있는 IDebugProgram2를 나타냅니다. |
IDebugProgramNode2 | DE, PS | 디버그할 수 있는 프로그램을 나타냅니다. |
IDebugProgramNodeAttach2 | DE, PS | 프로그램 노드가 연결된 프로그램에 연결하려는 시도에 대한 알림을 받을 수 있습니다. |
IDebugProgramProvider2 | DE | SDM이 해당 DE에서 제어하는 프로그램에 대해 DE를 쿼리하는 방법을 제공합니다. |
IDebugProgramPublisher2 | VS | DE에서 프로그램을 SDM에 등록하여 디버그 중임을 표시하기 위해 사용됩니다. |
IDebugProviderProgramNode2 | DE, PS | 스레드 또는 프로세스 경계를 넘어 인터페이스를 마샬링할 수 있는 IDebugProgramNode2를 나타냅니다. |
IEnumDebugPrograms2 | DE, PS | 프로그램 세트의 열거형을 나타냅니다. |
속성
이러한 인터페이스는 속성, 특정 컨텍스트와 연결된 값, 일반적으로 식 평가의 결과를 나타냅니다.
인터페이스 | 구현자 | 설명 |
---|---|---|
IDebugCustomViewer | EE | 사용자 지정 방식으로 값을 표시할 수 있는 IDebugProperty2를 나타냅니다. |
IDebugProperty2 | DE | 스택 프레임, 문서 또는 식 계산 결과의 값을 나타냅니다. |
IDebugProperty3 | DE | 임의로 긴 문자열을 지원하는 IDebugProperty2를 나타냅니다. |
IDebugPropertyCreateEvent2 | DE | 새 속성(IDebugProperty2 인터페이스로 표시됨)이 생성되었을 때 DE에서 전송됩니다. |
IDebugPropertyDestroyEvent2 | DE | 속성이 삭제되었을 때 DE에서 전송됩니다. |
IDebugReference2 | DE | 특정 스택 프레임 외부에 존재할 수 있는 속성에 대한 참조를 나타냅니다. |
IEnumDebugPropertyInfo2 | DE | 변수, 레지스터, 매개 변수 및 식을 설명하는 DEBUG_PROPERTY_INFO 구조체 세트에 대한 열거형을 나타냅니다. |
IEnumDebugReferenceInfo2 | DE | DEBUG_REFERENCE_INFO 구조체 세트에 대한 열거형을 나타냅니다. |
스택 프레임
이러한 인터페이스는 중단점 또는 예외가 발생한 컨텍스트인 스택 프레임을 나타냅니다.
인터페이스 | 구현자 | 설명 |
---|---|---|
IDebugStackFrame2 | DE | 중단점 또는 예외가 발생한 컨텍스트를 나타냅니다. |
IDebugStackFrame3 | DE | 가로챈 예외를 처리할 수 있는 IDebugStackFrame2를 나타냅니다. |
IEnumCodePaths2 | DE | 특정 스택 프레임에 도착하기 위해 사용되는 함수 호출 시퀀스를 지정하는 CODE_PATH 구조체 세트에 대한 열거형을 나타냅니다. |
IEnumDebugFrameInfo2 | DE | 스택 프레임을 설명하는 FRAMEINFO 구조체 세트에 대한 열거형을 나타냅니다. |
스레드
이러한 인터페이스는 스레드 및 관련 이벤트를 나타냅니다.
인터페이스 | 구현자 | 설명 |
---|---|---|
IDebugThread2 | DE | 실행 스레드를 나타냅니다. |
IDebugThreadCreateEvent2 | DE | 스레드가 생성되었을 때 DE에서 전송됩니다. |
IDebugThreadDestroyEvent2 | DE | 스레드가 삭제되었을 때 DE에서 전송됩니다. |
IDebugThreadNameChangedEvent2 | DE | 스레드가 해당 이름을 변경했을 때 DE에서 전송됩니다. |
IEnumDebugThreads2 | DE | 스레드 세트에 대한 열거형을 나타냅니다. |
형식 시각화 도우미
이러한 인터페이스는 형식 시각화 도우미 지원을 제공합니다. 이러한 인터페이스는 일반적으로 식 계산기에서 구현됩니다.
인터페이스 | 구현자 | 설명 |
---|---|---|
IEEDataStorage | EE | 형식 시각화 도우미에 표시할 바이트 배열을 나타냅니다. |
IPropertyProxyEESide | EE | 형식 시각화 도우미에 전달할 데이터에 대한 액세스를 가져오는 메서드를 제공합니다. |
IPropertyProxyProvider | EE | IPropertyProxyEESide 구현에 대한 액세스를 제공하는 속성을 나타냅니다. |