异常处理 (Visual Studio SDK)

下面介绍了引发异常时发生的过程。

异常处理过程

  1. 首次引发异常时,但在被调试的程序中的异常处理程序处理异常处理程序之前,调试引擎(DE)会将 IDebugExceptionEvent2 作为停止事件发送到会话调试管理器(SDM)。 IDebugExceptionEvent2仅当异常设置(在调试包中的异常对话框中指定)指定用户希望在首次发生异常通知时停止时,将发送该异常。

  2. SDM 调用 IDebugExceptionEvent2::GetException 以获取异常的属性。

  3. 调试包调用 IDebugExceptionEvent2::CanPassToDebuggee 以确定向用户显示哪些选项。

  4. 调试包询问用户如何通过打开第一次机会异常对话框来处理异常。

  5. 如果用户选择继续,SDM 将调用 IDebugExceptionEvent2::CanPassToDebuggee

  6. 如果调试的程序没有针对第二次异常的处理程序,DE 会将一个 IDebugExceptionEvent2 作为 EVENT_SYNC_STOP发送到 SDM。

  7. 调试包询问用户如何通过打开第一次机会异常对话框来处理异常。

  8. 调试包调用 IDebugExceptionEvent2::CanPassToDebuggee 以确定向用户显示哪些选项。

  9. 调试包询问用户如何通过打开第二次异常对话框来处理异常。

  10. 如果方法返回S_OK,则调用 IDebugExceptionEvent2::PassToDebuggee