我对使用MinGW进行编译的C ++程序有一个完全令人困惑的问题。在程序中的某个确定点处,一些异常处理程序被禁用,并且不再处理将来抛出的任何异常。我可以跟踪执行此操作的精确源代码行,这是对堆上数组的无意分配。指针没有腐败,我也没有超出它的范围。更多相同的代码在一堆不同的情况下被调用,即使是大多数相同的参数也没有触发错误。如果我使用代码来使其写入的值始终为零,则永远不会触发该错误。我不知道发生了什么。它还只禁用一些异常处理程序。异常处理程序进一步向下调用callstack被禁用,而更高的异常处理程序保持活动状态。这令人费解。
那么,我该如何调试呢?我真的不太了解MinGW版GCC中异常的实际工作方式。可能会发生什么导致这种奇怪的症状?
答案 0 :(得分:0)
没关系,事实证明,抽出一些时间并考虑症状就表明了答案。
原来我正在使用的一个糟糕的库可以在清理期间抛出一个异常,所以我在堆栈展开期间在异常中得到一个异常。
我应该已经意识到当处理程序进一步向上调用堆栈时表现正常。咄。