Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows gfortran正在本地化调试器中未出现的错误_Windows_Fortran_Gfortran - Fatal编程技术网

Windows gfortran正在本地化调试器中未出现的错误

Windows gfortran正在本地化调试器中未出现的错误,windows,fortran,gfortran,Windows,Fortran,Gfortran,我已生成一个名为mtc08.exe的gfortran可执行文件,该文件具有以下行为: 1) 如果我在gdb中运行它,它将成功运行到最后 2) 如果我正常运行,请使用windows命令重新路由输出 mtc08.exe >out 它给了我“浮点异常-错误的算术运算”,但没有说明发生在哪里。(我无法理解“回溯”信息,它似乎不能包含太多信息,因为所有信息都是字母“f”。) 然后,我试图通过查看程序在哪里停止写入结果来定位问题,但也有困难,因为我得到的印象是,程序可能是多任务的,并且在完成输出操作

我已生成一个名为mtc08.exe的gfortran可执行文件,该文件具有以下行为:

1) 如果我在gdb中运行它,它将成功运行到最后 2) 如果我正常运行,请使用windows命令重新路由输出

mtc08.exe >out
它给了我“浮点异常-错误的算术运算”,但没有说明发生在哪里。(我无法理解“回溯”信息,它似乎不能包含太多信息,因为所有信息都是字母“f”。)

然后,我试图通过查看程序在哪里停止写入结果来定位问题,但也有困难,因为我得到的印象是,程序可能是多任务的,并且在完成输出操作之前继续进行“未来”的算术操作,在任何情况下都不会产生干扰

这样的多任务工作会发生吗?如果是这样的话,我可以用一个编译器开关关闭它,这样我就可以确定它是按顺序执行所有操作的吗

windows中当前使用的编译命令是:

rem debug compilation:
gfortran -static -fdefault-real-8 -fdefault-integer-8 -g -ffpe-trap=invalid,zero,overflow,underflow,denormal -Wall -fcheck=all @mtc08.fls -o mtc08.exe
其中mtc08.fls是一个包含所有源文件名称的文件

可能是因为去掉了一些“-ffpe陷阱”选项,它会运行,但这会动摇我的信心,我想弄清它的底细,而不仅仅是找到一条出路


我当然可以提供更多的信息,但是看到错误没有本地化,这是不太实际的。

我仍然不知道如何获得更好的诊断,但仍然通过尝试和错误找到了问题的原因,这来自未初始化的变量

出现这个问题是因为gdb对未初始化的变量使用了零,而这些变量本来应该是它们的值,并且在没有gdb的情况下运行相同的可执行文件时使用了导致“浮点异常”的值

在gdb中获得更好诊断的一种方法是在编译中使用-finit real nan,这样未初始化的变量将得到调试器的更多关注

也许有了更好的编码实践,例如所有参数的意图声明,调试器也可以更好地拾取未初始化的变量,而不必将它们初始化为nan