write语句如何影响Fortran代码?

时间:2015-09-28 12:12:38

标签: fortran

我已经编写了由英特尔Fortran编译的商业软件的子程序,因此代码是用Fortran编写的。子程序本身编译没有任何问题,但当我将它链接到主软件时,我得到了一些奇怪的结果。

最有趣和最令人惊讶的事件是:

当我在子例程中放入write语句时,我得到的结果与其中没有write语句的结果不同,并且通过更改此语句的位置,结果也会更改。我从未见过write语句会影响结果。如果有人给我一个想法,我真的很感激吗?

1 个答案:

答案 0 :(得分:3)

这是典型的未定义行为,反映了其他地方的错误。这可以是任何东西,比如损坏的堆栈,超出内存访问等等......

使用调试选项,绑定检查等进行编译的时间,并试试调试器。

假设您使用的是Linux,请尝试添加" -g -O0 -check all"到您的编译器命令行选项。这可以在运行时报告有趣的信息。

还尝试使用gdb运行代码,并在崩溃时使用bt检查调用堆栈。