温馨提示×

ubuntu Fortran调试怎么弄

小樊
44
2026-09-28 09:53:55
栏目: 智能运维

在 Ubuntu 上调试 Fortran 程序,通常的流程是:编译时加调试信息 → 用调试器(gdb)或打印日志 → 必要时用静态/动态分析工具。下面给你一套实用方案。


一、准备编译环境

1. 安装编译器

一般使用 gfortran:

sudo apt update
sudo apt install gfortran

如果需要调试工具:

sudo apt install gdb

二、编译时开启调试信息(关键)

基本调试编译

gfortran -g -O0 -o myprog myprog.f90

说明:

  • -g:生成调试信息
  • -O0:关闭优化(否则变量可能被优化掉,调试不准)

推荐写法(更严格)

gfortran -g -O0 -Wall -fcheck=all -o myprog myprog.f90
  • -Wall:常见警告
  • -fcheck=all:数组越界、未初始化等运行期检查(非常有用)

三、使用 GDB 调试 Fortran

1. 启动 GDB

gdb ./myprog

2. 常用 GDB 命令

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

示例:

break 25
run
print i
next

⚠️ 注意:

  • Fortran 变量名在 gdb 中通常是小写
  • 数组:print a(1)

四、程序崩溃时怎么查(核心转储)

1. 开启 core dump

ulimit -c unlimited

运行程序崩溃后:

gdb ./myprog core

然后:

backtrace

五、不依赖 GDB 的调试技巧(很常用)

1. 打印调试

print *, 'DEBUG i=', i

2. 写日志文件

open(10, file='log.txt')
write(10,*) 'step', i
close(10)

3. 数组越界检查(强烈推荐)

gfortran -g -O0 -fcheck=all myprog.f90

六、进阶工具(可选)

  • Valgrind(内存错误)
sudo apt install valgrind
valgrind ./myprog
  • gprof(性能)
gfortran -pg myprog.f90
./myprog
gprof ./myprog gmon.out

七、常见坑提醒

  1. 优化级别别用 -O2/-O3 调试
  2. 子程序名和变量名在 gdb 里是小写
  3. 模块化程序(module)调试时符号更清楚
  4. 如果用 implicit none,调试会轻松很多

如果你愿意,可以把:

  • Fortran 源码片段
  • 报错信息
  • 或用的是 .f / .f90 / .f03

发给我,我可以直接帮你定位问题。

0 踩