我正在调试一个我添加进去的大型数值程序。该程序用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,怎样才能确保程序在遇到浮点异常时停止运行(最好带有回溯)?我尝试按照这里的说明进行操作,但似乎没有改变任何内容。