debugging器主循环

我试图在c ++ / Windows中实现本文中描述的“debugging器主循环”: 编写debugging器的主循环

但是我想要抛出一个exception来向secreen显示一个错误信息,并被debugging器捕获。 我明白,我可以通过给ContinueDebugEvent DBG _的一些值来做到这一点。 但我不知道是什么
这是什么价值?

我还注意到,控制台应用程序写入内容时,会通知debugging器出现exception。 我如何过滤这些事情的实际例外? 这与“第一次机会”价值有什么关系?
谢谢 :)

调试器接收到一个异常事件,发生在调试对象中的每个异常。 如果将DBG_CONTINUE传递给ContinueDebugEvent ,则调试器会吞服该异常,并继续执行,就好像没有发生异常。 这意味着调试对象也不会被通知。 另一方面,如果通过DBG_EXCEPTION_NOT_HANDLED ,调试对象将被通知并负责处理异常。

现在,如果调试对象不处理(读取:捕获)异常,调试器会再次得到通知,这次Event.u.Exception.dwFirstChance设置为0.此时,异常将终止进程DBG_EXCEPTION_NOT_HANDLED

需要牢记两点:

  • 将字符串传递给调试器的正常方法是OutputDebugString 。 除非需要传递字符串以外的东西,否则不需要使用自定义的异常。
  • 如果您计划抛出自己的异常来将某些事件传递给调试器,请检查Event.u.Exception.ExceptionRecord.ExceptionCode并查看它是否与预定义的异常类型匹配,并在该情况下使用DBG_CONTINUE