【发布时间】:2015-07-01 14:50:13
【问题描述】:
我正在调试一个已添加到其中的更大的数值程序。它是用 fortran90 编写的,使用 gfortran(适用于 Mac 的最新版本)编译,我正在使用 gdb(同样适用于 Mac 的最新版本)对其进行调试。
我的添加在某处有一个错误,我正在尝试找到它,这很明显,因为运行程序不会产生预期的结果。当我在 gdb 中运行它时,最后会得到以下输出:
Note: The following floating-point exceptions are signalling: IEEE_INVALID_FLAG IEEE_DIVIDE_BY_ZERO IEEE_UNDERFLOW_FLAG IEEE_DENORMAL
[Inferior 1 (process 83843) exited normally]
我想准确地确定此 FPE 发生的位置,但似乎浮点异常不会导致程序崩溃。我通过在我的代码中显式除以 0 来测试这一点 - 它不会导致程序停止运行,但会导致意外行为。
gdb 或 gfortran 的正确标志是什么,以确保程序在遇到浮点异常时停止运行(最好使用回溯)?我尝试按照here 的说明进行操作,但似乎没有任何改变。
【问题讨论】:
-
stackoverflow.com/questions/10210759/… 中提到的编译器标志可能会有所帮助。但是,您能否在问题中提及版本号? “最新”在未来对读者的用处会减少。
标签: gdb fortran fortran90 gfortran