다음을 통해 공유


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

참고 항목