【问题标题】:How do you debug MinGW exception handling?你如何调试 MinGW 异常处理?
【发布时间】:2014-12-24 21:10:04
【问题描述】:

我用 MinGW 编译的 C++ 程序有一个完全令人困惑的问题。在程序中的某个确定性点,一些异常处理程序被禁用,并且不再处理任何未来抛出的异常。我可以找到执行此操作的确切源代码,这是对堆上数组的无害分配。指针没有损坏,我也没有超出它的界限。更重要的是,在一堆不同的情况下调用相同的代码,即使使用大多数相同的参数而不会触发错误。如果我修改代码以使其写入的值始终为零,则永远不会触发该错误。我不知道发生了什么。它也只禁用一些异常处理程序。调用堆栈下方的异常处理程序被禁用,而更高的异常处理程序保持活动状态。真是莫名其妙。

那么,我应该如何调试呢?我真的不太了解异常在 MinGW 版本的 GCC 中是如何工作的。是什么导致了这一系列奇怪的症状?

【问题讨论】:

    标签: c++ exception-handling mingw


    【解决方案1】:

    没关系,事实证明,花点时间思考一下症状就可以找到答案。

    原来我正在使用的一个糟糕的库在清理过程中会引发异常,所以我在堆栈展开期间在异常中得到了一个异常。

    我应该意识到,当处理程序进一步向上调用堆栈时,它的行为正常。呵呵。

    【讨论】:

      猜你喜欢
      • 2012-11-04
      • 1970-01-01
      • 2013-06-01
      • 2013-04-25
      • 2020-11-11
      • 1970-01-01
      • 1970-01-01
      • 2016-11-01
      • 1970-01-01
      相关资源
      最近更新 更多