IDebugStackFrame3

此接口扩展 IDebugStackFrame2 来处理截获的异常。

语法

IDebugStackFrame3 : IDebugStackFrame2

实现者须知

调试引擎 (DE) 在实现 IDebugStackFrame2 接口以支持截获的异常的同一对象上实现此接口。

对调用者的说明

在接口上IDebugStackFrame2调用 QueryInterface 以获取此接口。

Vtable 顺序中的方法

除了从 IDebugStackFrame2 继承的方法外, IDebugStackFrame3 还公开以下方法。

方法 说明
InterceptCurrentException 在处理任何常规异常处理之前处理当前堆栈帧的异常。
GetUnwindCodeContext 如果发生堆栈展开,则返回代码上下文。

备注

截获的异常意味着调试器可以在运行时调用任何正常异常处理例程之前处理异常。 截获异常实质上意味着使运行时假装存在异常处理程序,即使不存在。

  • 在所有正常异常回调事件期间调用 InterceptCurrentException (唯一的异常是,如果要调试混合模式代码(托管代码和非托管代码),在这种情况下,在上次机会回调期间无法截获异常)。 如果未实现 IDebugStackFrame3DE,或者 DE 从 IDebugStackFrame3::(InterceptCurrentException 例如 E_NOTIMPL),调试器将正常处理异常。

通过截获异常,调试器可以允许用户更改正在调试的程序的状态,然后在引发异常时恢复执行。

注意

仅允许在托管代码(即公共语言运行时(CLR)下运行的程序中允许截获的异常。

调试引擎指示它通过使用函数在运行时 SetMetric 将“metricExceptions”设置为值 1 来支持截获异常。 有关详细信息,请参阅 SDK 帮助程序进行调试

要求

标头:msdbg.h

命名空间:Microsoft.VisualStudio.Debugger.Interop

程序集:Microsoft.VisualStudio.Debugger.Interop.dll

另请参阅