温馨提示×

ubuntu下fortran怎么调试

小樊
35
2026-10-07 03:40:56
栏目: 智能运维

在 Ubuntu 下调试 Fortran 程序,常见做法是编译时加调试信息 + 用调试器(gdb),也可以配合一些辅助工具。下面按“从入门到常用”的顺序说明。


一、基本环境准备

1. 安装编译器

通常 Ubuntu 自带 gfortran,如果没有:

sudo apt update
sudo apt install gfortran

2. 安装调试器

sudo apt install gdb

(可选)带界面的调试器:

sudo apt install ddd
# 或
sudo apt install nemiver

二、编译时打开调试信息(非常重要)

正确编译方式

gfortran -g -O0 -o test test.f90

说明:

  • -g:生成调试信息
  • -O0:关闭优化(否则变量可能被优化掉,调试困难)
  • 不要用 -O2 -O3 来调试

如果是多文件:

gfortran -g -O0 main.f90 sub.f90 -o app

三、使用 gdb 调试 Fortran

1. 启动 gdb

gdb ./test

2. 常用 gdb 命令(Fortran 友好)

功能 命令
设置断点 break 行号 或 break 子程序名
运行 run
单步(不进函数) next
单步(进函数) step
查看变量 print 变量名
查看调用栈 backtrace
继续运行 continue
退出 quit

示例

program main
  integer :: i, s
  s = 0
  do i = 1, 10
     s = s + i
  end do
  print *, s
end program main

调试:

gdb ./test
(gdb) break 5
(gdb) run
(gdb) print i
(gdb) next

四、Fortran 调试的注意点

1. 数组调试

real :: a(10)

gdb 中:

print a(1)
print a(1:5)

2. 模块变量

如果变量在 module 中:

print modulename::variable

3. 优化导致“看不了变量”

如果出现:

No symbol "x" in current context

一定是忘了 -O0 -g


五、进阶工具(可选)

1. 内存错误检查(非常推荐)

sudo apt install valgrind
valgrind ./test

适合:

  • 数组越界
  • 未初始化变量
  • 内存泄漏

2. 静态检查

gfortran -Wall -Wextra -fcheck=all -g -O0 test.f90

-fcheck=all 会检查:

  • 数组越界
  • 未分配数组
  • 空指针

3. 图形化调试

  • Visual Studio Code
    • 安装:C/C++(对 Fortran 也有基本支持)
    • 配合 gdb
  • Intel oneAPI(如果可用)
    • gdb-oneapi

六、推荐调试组合(实战)

gfortran -g -O0 -Wall -Wextra -fcheck=all -o app app.f90
gdb ./app

如果还怀疑内存问题:

valgrind ./app

如果你愿意,可以把:

  • 你的 Fortran 代码
  • 报错信息
  • 使用的 Ubuntu 版本

发出来,我可以帮你具体定位调试问题。

0 踩