【发布时间】:2009-08-25 23:42:21
【问题描述】:
我在使用一些用于研究的旧代码时遇到问题,我想使用英特尔 Fortran 编译器进行编译。在一个特定的子程序中,除非我添加一个只输出循环索引值的write 语句,否则我会遇到分段错误。
do j=1,ne
SOME STUFF
write(*,*) 'j=', j
end
是什么导致了我的错误,以至于这个写语句可以修复我的分段错误? (注:j 声明为整数)
谢谢, 凯利
【问题讨论】:
-
你能把它分解成一个最小的、独立的、仍然崩溃的例子吗?否则很难诊断;在“某些东西”中的某处可能存在未定义的行为,因此段错误被写入的某些副作用所阻止。基本上你的经典“heisenbug”....
-
我遇到了完全相同的问题。我可以看到这可能是由于编译中使用了不同的优化。这让我认为代码仍然存在问题,即使它不再崩溃。
标签: fortran