2014-12-24 49 views
1

我用MinGW编译的C++程序有一个完全令人困惑的问题。在程序中的某个确定性点处,一些异常处理程序被禁用,并且不再处理将来引发的任何异常。我可以追踪确切的源代码行,这是对堆中数组的无害分配。指针没有损坏,我也没有超出其范围。更重要的是,在很多不同的情况下调用相同的代码,即使大部分相同的参数都没有触发错误。如果我拨弄代码以使其值始终为零,则不会触发该错误。我不知道发生了什么。它也只能禁用一些异常处理程序。异常处理程序进一步下来的调用堆栈被禁用,而较高的异常处理程序保持活动状态。真是莫名其妙。如何调试MinGW异常处理?

那么,我该如何去调试呢?在MinGW的GCC版本中,我真的无法很好地理解异常情况。发生这种奇怪的一系列症状会发生什么?

回答

0

没关系,事实证明,抽出一些时间和思考症状提示了答案。

结果我使用的一个可怕的库可能会在清理过程中抛出一个异常,所以我在堆栈展开期间发生异常。

我应该意识到,当处理程序进一步调用堆栈时表现正常。咄。