gfortran本地化调试器中没有出现的错误

时间:2018-02-09 06:38:25

标签: windows fortran gfortran

我已经生成了一个gfortran可执行文件,我称之为mtc08.exe,它表现出以下行为:

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

mtc08.exe >out

它给了我"浮点异常 - 错误的算术运算"但没有说明发生的地方。 ("回溯"信息对我来说是不可理解的,似乎它不能包含太多信息,因为所有信息都是字母" f"。)

然后我试图通过查看程序停止写入结果的位置来解决问题,但也有困难,因为我得到的印象是程序可能是多任务处理并且继续" future&#34 ;完成输出操作之前的算术运算,在任何情况下都不会干扰。

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

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-trap"它可以运行的选项,但这让我充满信心,我想深究它,而不仅仅是找到一条路。

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

1 个答案:

答案 0 :(得分:-1)

我仍然不知道如何获得更好的诊断,但仍然设法通过反复试验找到问题的原因,这是来自未初始化的变量。

看起来写一个未初始化的变量的命令导致程序声明“浮点异常 - 错误的算术运算”,并且甚至在执行代码中较早的写语句之前停止。这对我来说似乎很奇怪,我仍然想知道它是否不是由一些更隐蔽的错误引发的。

我想在这种情况下没有它们会显示出有价值的良好诊断方法。