MST

星途 面试题库

面试题:Fortran 常见调试问题及处理

在 Fortran 编程中,当程序出现数组越界错误时,通常可以使用哪些调试技巧快速定位问题?请列举至少两种常用的 Fortran 调试工具及其相关定位数组越界错误的方法。
22.6万 热度难度
编程语言Fortran

知识考点

AI 面试

面试题答案

一键面试

调试技巧

  1. 添加边界检查代码:在访问数组元素的地方添加额外的代码,检查索引是否在有效范围内。例如,对于数组 A,在访问 A(i) 之前,添加如下代码:
if (i < 1 .or. i > size(A)) then
    print *, '数组越界,索引 i = ', i
    stop
end if
  1. 使用打印语句:在程序中关键的数组操作位置添加打印语句,输出数组索引值以及相关变量的值。例如,在数组赋值语句 A(i) = ... 前打印 i 的值,以便观察索引是否超出合理范围。
print *, '当前数组索引 i = ', i
A(i) = ...

调试工具

  1. gdb(GNU 调试器)
    • 启动调试:编译 Fortran 程序时添加调试信息(例如 gfortran -g your_program.f90 -o your_program),然后使用 gdb your_program 启动调试。
    • 设置断点:在可能发生数组越界的代码行处设置断点,如 break your_file.f90:line_number,其中 your_file.f90 是源文件名,line_number 是具体行号。
    • 运行程序:使用 run 命令运行程序,当程序停在断点处时,使用 print 命令查看数组索引变量的值,判断是否越界,如 print i
  2. Intel Fortran Debugger (IFORT debugger)
    • 编译选项:使用 Intel Fortran 编译器编译程序时添加调试选项(例如 ifort -g your_program.f90 -o your_program)。
    • 启动调试:运行 ifortdbg your_program 启动调试器。
    • 设置观察点:可以针对数组变量设置观察点,当数组被访问或修改时,调试器会暂停。例如,设置观察点 watch A,这样当 A 数组相关操作发生时,就可以查看索引等信息,判断是否越界。