【发布时间】:2014-12-24 21:10:04
【问题描述】:
我用 MinGW 编译的 C++ 程序有一个完全令人困惑的问题。在程序中的某个确定性点,一些异常处理程序被禁用,并且不再处理任何未来抛出的异常。我可以找到执行此操作的确切源代码,这是对堆上数组的无害分配。指针没有损坏,我也没有超出它的界限。更重要的是,在一堆不同的情况下调用相同的代码,即使使用大多数相同的参数而不会触发错误。如果我修改代码以使其写入的值始终为零,则永远不会触发该错误。我不知道发生了什么。它也只禁用一些异常处理程序。调用堆栈下方的异常处理程序被禁用,而更高的异常处理程序保持活动状态。真是莫名其妙。
那么,我应该如何调试呢?我真的不太了解异常在 MinGW 版本的 GCC 中是如何工作的。是什么导致了这一系列奇怪的症状?
【问题讨论】:
标签: c++ exception-handling mingw