GDB调试器中异常

  • 本文关键字:异常 调试器 GDB gfortran
  • 更新时间 :
  • 英文 :


我正在用gfortran编译,包括编译器选项-g -fbacktrace -ffpe-trap=invalid, 0,overflow,underflow, abnormal这导致了在gdb调试器下运行的可执行文件,但是在正常运行时发生浮点异常。如果我在没有异常陷阱的情况下重新编译,后者就会消失。

可能是异常的陷阱不工作时,运行gdb?

关于如何找到浮点异常发生的地方有什么建议吗?

通过运行一个简单的测试,可以看出异常陷阱在正常和fdb执行时都保持活动状态,即使编译中只包含了底流陷阱而不包含异常陷阱。

问题最终追溯到未初始化的变量,这些变量在gdb或正常执行时可能会有不同的值。为了在没有调试器的情况下对问题进行本地化,我不仅使用了许多调试写语句,而且还使用了顺序向后移动的stop语句,直到错误被本地化,因为看起来代码在写语句之前竞争,并且后面的fpe可能导致写语句不被执行,即使它发生在fpe之前。

不知为什么-Wuninitialized编译器选项没有检测到未初始化变量的使用。

这些经验确实来自windows安装的gfortran和相关的fdb调试器,可以追溯到2016年左右。

最新更新