IDebugStackFrame3
이 인터페이스는 IDebugStackFrame2를 확장하여 가로채는 예외를 처리합니다.
구문
IDebugStackFrame3 : IDebugStackFrame2
구현자에 대한 참고 사항
DE(디버그 엔진)는 가로채는 예외를 지원하기 위해 IDebugStackFrame2 인터페이스를 구현하는 동일한 개체에서 이 인터페이스를 구현합니다.
호출자 참고 사항
IDebugStackFrame2
인터페이스에서 QueryInterface를 호출하여 이 인터페이스를 가져옵니다.
Vtable 순서의 메서드
IDebugStackFrame2에서 상속된 메서드 외에도 IDebugStackFrame3
은 다음 메서드를 노출합니다.
메서드 | 설명 |
---|---|
InterceptCurrentException | 일반적인 예외 처리 전에 현재 스택 프레임에 대한 예외를 처리합니다. |
GetUnwindCodeContext | 스택 해제가 발생하는 경우 코드 컨텍스트를 반환합니다. |
설명
가로채는 예외는 런타임에 의해 일반적인 예외 처리 루틴이 호출되기 전에 디버거가 예외를 처리할 수 있음을 의미합니다. 예외를 가로채는 것은 기본적으로 예외 처리기가 없는 경우에도 있는 것처럼 가장하는 것을 의미합니다.
- InterceptCurrentException은 모든 일반 예외 콜백 이벤트 중에 호출됩니다(유일한 예외는 혼합 모드 코드(관리 코드 및 비관리 코드)를 디버그하는 경우이며, 이 경우 마지막 콜백 중에 예외를 가로챌 수 없음). DE가
IDebugStackFrame3
을 구현하지 않거나 DE가 IDebugStackFrame3::InterceptCurrentException
(예:E_NOTIMPL
)에서 오류를 반환하는 경우 디버거는 예외를 정상적으로 처리합니다.
디버거는 예외를 가로채서 사용자가 디버그 중인 프로그램의 상태를 변경한 다음, 예외가 throw된 지점에서 실행을 다시 시작할 수 있습니다.
참고 항목
가로채는 예외는 관리 코드, 즉 CLR(공용 언어 런타임)에서 실행되는 프로그램에서만 허용됩니다.
디버그 엔진은 SetMetric
함수를 사용하여 런타임에 “metricExceptions“를 1 값으로 설정하여 예외 가로채기를 지원한다는 것을 나타냅니다. 자세한 내용은 디버깅을 위한 SDK 도우미를 참조하세요.
요구 사항
헤더: msdbg.h
네임스페이스: Microsoft.VisualStudio.Debugger.Interop
어셈블리: Microsoft.VisualStudio.Debugger.Interop.dll