在 CentOS 上调试 Fortran 程序,通常流程是:编译时加调试信息 → 用调试器(gdb)或打印日志 → 定位问题。下面按“从入门到常用”给你一套实用方案。
一般使用 gfortran(GNU Fortran):
sudo yum install gcc-gfortran
验证:
gfortran --version
gfortran -g -O0 -o test test.f90
说明:
-g:生成调试信息-O0:关闭优化(非常重要,否则变量可能被优化掉)-O2/-O3 调试gdb ./test
| 功能 | 命令 |
|---|---|
| 运行 | run |
| 设断点 | break 行号break 子程序名 |
| 查看变量 | print 变量名 |
| 单步 | step |
| 下一步 | next |
| 查看堆栈 | backtrace |
| 继续 | continue |
| 退出 | quit |
示例:
break 20
run
print a
step
⚠️ Fortran 变量在 gdb 中通常小写,如 A → a
gfortran -g -O0 -fcheck=all -o test test.f90
会检查:
运行出错会直接提示行号。
gfortran -g -O0 -ffpe-trap=invalid,zero,overflow
print *, 'DEBUG a=', a
或写日志文件:
open(10, file='log.txt')
write(10, *) 'step=', i
close(10)
-g -O0 编译gdb ./test
run
backtrace
看是哪一行、哪个子程序。
sudo yum install valgrind
valgrind ./test
sudo yum install gdb-gdbserver
# 或用 vscode + Remote SSH
program main
integer :: i, a(5)
do i = 1, 5
a(i) = i * 2
end do
print *, a
end program main
编译调试:
gfortran -g -O0 -fcheck=all -o main main.f90
gdb ./main
如果你愿意,可以:
我可以直接帮你定位问题。