NAG Fortran 编译器调试功能:与其他 Fortran 编译器比较
NAG Fortran 编译器最为强大的功能就是具备程序调试能力。当您在考虑移植您的 Fortran 程序到不同的平台时,程序本身是否能够遵从 Fortran 标准就显得非常重要了。
以下是一些程序示例,并与其他的编译器进行比较,我们以 NAG Fortran Builder 进行编译。
变量没有初始化 - 调用子程序时参数未初始化
NAG Fortran 编译器可以调试出来,有些编译器无法侦测出。
变数 I 并未初始化

Reference to undefined variable I
变量没有初始化 - Module 中变数未初始化
NAG Fortran 编译器可以调试出来,有些编译器无法侦测出。
变数 X 在 mymod Moudle 中并未默认

Reference to undefined variable X
变数没有初始化 - 矩阵中部分的元素并未初始化
NAG Fortran 编译器可以调试出来,有些编译器无法侦测出。
变数 X(4) 并未默认

Reference to undefined variable X
对超过矩阵大小的元素进行处理
NAG Fortran 编译器可以调试出来,有些编译器无法侦测出。
变量 X 指声明为 4,却对 X(5) 进行处理

Subscript 1 of X (value 5) is out of range (1:4)
矩阵不一样大小
NAG Fortran 编译器可以调试出来,有些编译器无法侦测出。
Y 与 Z 矩阵大小不同

Rank 1 of array operand has extent 4 instead of 5
循环的索引值不合理的改变
NAG Fortran 编译器可以调试出来,有些编译器无法侦测出。
循环索引值 I 不合理的改变

Dummy argument I is associated with an expression - cannot
assign
循环的递增值为 0
NAG Fortran 编译器可以调试出来,有些编译器会发生除 0 的错误型态。
循环递增值不可为 0

DO step value is zero
悬浮指针问题 - 对已经释放空间的指针进行处理
NAG Fortran 编译器可以调试出来,有些编译器无法侦测出。
P 指针所指到的 A 已经释放内存空间了

Reference to dangling pointer P
- Target was DEALLOCATEd
at line 8 of main.f95