在 CentOS 上调试 Fortran 代码,通常有两种主流方式:使用 gdb 调试 和 使用编译器的调试选项。下面一步一步说明。
CentOS 默认可能没有 Fortran 编译器,先安装:
sudo yum install gcc-gfortran gdb
验证:
gfortran --version
gdb --version
调试 Fortran 必须加 -g,否则看不到变量和行号。
gfortran -g -O0 -o test test.f90
说明:
-g:生成调试信息-O0:关闭优化(避免变量被优化掉)如果是多个文件:
gfortran -g -O0 main.f90 sub.f90 -o main
gdb ./test
| 功能 | 命令 |
|---|---|
| 设置断点 | break 行号 或 break 子程序名 |
| 运行 | run |
| 单步(进入函数) | step |
| 单步(不进入) | next |
| 查看变量 | print 变量名 |
| 查看所有变量 | info locals |
| 继续运行 | continue |
| 查看堆栈 | bt |
| 退出 | quit |
示例:
break 20
run
print a
next
⚠️ 注意:Fortran 变量在 gdb 中通常是小写。
gfortran -g -O0 -fcheck=all -o test test.f90
运行时如果越界会直接报错。
gfortran -g -O0 -Wuninitialized -Wall
sudo yum install valgrind
valgrind ./test
适合排查:
如果你不想用命令行:
-g → 看不到变量-O2 → 变量被优化program main
integer :: i, s
s = 0
do i = 1, 10
s = s + i
end do
print *, s
end program main
编译:
gfortran -g -O0 test.f90 -o test
调试:
gdb ./test
break 5
run
print s
如果你愿意,可以:
我可以帮你具体定位问题。