Debian系统调试Fortran程序的完整流程
在Debian系统中,调试Fortran程序需先安装Fortran编译器(用于编译带调试信息的程序)和GDB调试器(用于调试)。通过以下命令一键安装:
sudo apt-get update
sudo apt-get install gfortran gdb
gfortran:GNU Fortran编译器,支持Fortran 77/90/95/2003等标准,编译时需添加-g选项生成调试信息;gdb:GNU调试器,支持Fortran语言,用于设置断点、单步执行、查看变量等操作。使用gfortran编译时,必须添加-g选项(生成调试符号),否则GDB无法关联源代码与二进制文件。示例如下:
gfortran -g -o my_program my_program.f90
-g:关键选项,将源代码行号、变量名等信息嵌入可执行文件;my_program.f90:你的Fortran源代码文件(支持.f、.f90等扩展名);my_program:生成的可执行文件名(可自定义)。启动GDB并加载编译后的程序:
gdb ./my_program
进入GDB命令行界面后,可通过以下命令完成调试:
断点是调试的“暂停点”,程序执行到此处会停止,方便检查变量或调用栈。常用命令:
break 10
subroutine my_sub):break my_sub
info breakpoints
启动程序执行,若程序需要命令行参数(如./my_program arg1 arg2),可在run后添加:
run # 无参数时
run arg1 arg2 # 有参数时
程序会在第一个断点处暂停(若未设置断点,则直接运行到结束)。
step(简写s):进入当前行的函数内部(如调用call my_func时,进入my_func的代码);next(简写n):执行当前行,但不进入函数内部(直接跳到下一行);continue(简写c):继续执行程序,直到下一个断点或程序结束。print命令(简写p),如:print x # 查看变量x的值
print array(1:5) # 查看数组array的前5个元素
backtrace命令(简写bt),显示当前函数的调用层次(如main→sub1→sub2),帮助定位问题发生的函数。调试时可动态修改变量值,验证程序逻辑。命令格式:
set variable x = 10 # 将变量x的值修改为10
调试完成后,输入quit(简写q)退出GDB:
quit
x > 100时暂停),减少不必要的暂停:break 20 if x > 100
x的值被修改时暂停),适用于查找变量意外修改的问题:watch x
list命令(简写l)查看当前执行的源代码上下文(如前后5行):list
list 15,20 # 查看15-20行的代码
若偏好图形界面,可通过VSCode+GDB扩展实现可视化调试:
sudo snap install --classic code # 安装VSCode
打开VSCode,搜索并安装Fortran扩展(如“Modern Fortran”)。.vscode/launch.json文件(用于定义调试配置),内容如下:{
"version": "0.2.0",
"configurations": [
{
"name": "Fortran Debug",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "Build Fortran",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
.vscode/tasks.json文件(用于编译Fortran程序),内容如下:{
"version": "2.0.0",
"tasks": [
{
"label": "Build Fortran",
"type": "shell",
"command": "gfortran -g -o ${fileDirname}/${fileBasenameNoExtension} ${file}",
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": ["$gcc"]
}
]
}
F5),即可启动调试会话。VSCode会自动编译程序并进入GDB调试界面,支持断点、单步执行、变量查看等功能。