Fortran 77调试器检查数组边界

时间:2010-07-08 19:24:02

标签: fortran77 gfortran

我仍然是调试F77的绿色,并且在数组边界方面存在一些问题。我最近修改了一个冗长的代码以获得新的数组大小。在我注意到改变一个阵列的方法,改变了另一个阵列之前,一切似乎都还可以。在这段代码的某处,我假设,一个赋值超出范围并写入其他数组。

Linux环境中是否有一个调试器/工具可以“捕获”超出范围的异常?

我目前正在使用gfortran

2 个答案:

答案 0 :(得分:2)

gfortran有一个标志可以插入超出范围的检查

  

-fbounds-check 启用对阵列的运行时检查   下标和反对声明   最小值和最大值。它也是   检查假设和的数组索引   反对的延迟形状数组   实际分配的边界。在将来   这也可能包括其他形式的   检查,例如。检查子串   引用。

http://linux.die.net/man/1/gfortran

输出符合要求:

At line 2153 of file src/cdtm0402.f
Fortran runtime error: Array reference out of bounds for array 'wv1mp', upper bound of dimension 1 exceeded (78 > 77)

Backtrace for this error:
  + function coefdp (0x448BC3)
    at line 2153 of file cdtm0402.f
  + in the main program
    at line 371 of file cdtm0402.f
  + /lib64/libc.so.6(__libc_start_main+0xfd) [0x7ffff703da7d]

答案 1 :(得分:1)

如果这是在雇主那里,你可能想让他们购买“燧石”牌照 - 就像C的“lint”,但是对于fortran来说。

另外,gdb / dbx / ddd不进行fortran调试吗?

哦,有时你需要打开f77中的特殊标志,以便在可执行文件和目标文件中维护字符串和调试信息,就像“cc -g”一样。