c#/C++混合编程的一个问题
有一天,我在调试一个问题,在一个进程上弹出一个Waston对话框。让我吃惊的是,在Waston触发的堆栈上,有一个带有Testcatch(…)块的非托管C++函数。据我理解,此块应该捕获Windows中抛出的任何用户模式异常,包括来自RaiseExceptionr调用(例如,C++异常)、AV、堆栈溢出等的异常。为什么异常会逃出这样的块而变得未处理?我发现异常是调试中断。在X86中,它由操作码0xCC或“int3”触发。当我调试到VCRT的EH代码时,我发现catch(…)故意让调试中断。它确实有意义:debug break是为了停止调试器,因此源代码不应该处理它。我只是从来没有意识到。
- 上一篇: Python爬虫常用正则re.findall的使用
- 下一篇: 调试器不应该改变行为