cgdb 学习笔记(GDB 图形化增强工具)
cgdb 是基于 GDB 的调试工具,通过代码高亮、分栏显示(代码区 + 调试命令区),让 “看代码” 和 “调试操作” 更直观高效。
一、安装(以 Ubuntu 为例)
通过包管理器安装:
bash
sudo apt install cgdb
二、核心调试流程
1. 启动与加载程序
- 启动 cgdb 并加载可执行程序:
cgdb 可执行文件
(如cgdb ./myprogram
)。- 编译程序时需加
-g
参数(如gcc -g main.c -o myprogram
),生成包含调试信息的可执行文件,才能实现源码级调试。(可以在makefile文件中设置好)
2. 断点管理(调试的 “锚点”)
- 设置断点:
- 行断点:
b 行号
(如break 10
,在第 10 行设置断点)。 - 函数断点:
b 函数名
(如break main
,在main
函数入口设置断点)。
- 行断点:
- 查看断点:
info b
,显示所有已设断点的信息(编号、位置、启用状态等)。 - 删除断点:
d 断点编号
。
3. 程序执行控制
- 启动执行:
run
(或简写r
),从程序开头运行,遇到断点后暂停。 - 单步执行:
- 逐行执行(不进入函数内部):
next
(或简写n
)。 - 逐行执行(进入函数内部):
step
(或简写s
)。
- 逐行执行(不进入函数内部):
- 继续执行:
continue
(或简写c
),从当前暂停位置继续运行,直到遇到下一个断点或程序结束。 - 执行到函数返回:
finish
(或简写f
),执行当前函数剩余代码,直到函数返回后暂停。
4. 变量与内存查看
- 查看变量值:
print 变量名
(或简写p 变量名
),如p i
查看变量i
的值。 - 自动显示变量:
display 变量名
,程序每次暂停时,会自动显示该变量的最新值(适合持续关注的变量)。 - 查看内存:
x/格式 地址
,如x/10x 0x123456
以十六进制格式,查看从0x123456
开始的 10 个内存单元。
5. 调试技巧
- 分栏协作:cgdb 分栏显示 “代码区” 和 “调试命令区”,可在代码区浏览源码结构,在命令区执行调试命令,提升调试效率。
- 流程化调试:先通过断点定位问题范围,再用 “单步执行 + 变量查看” 逐步分析,遵循 “发现问题 → 分析问题 → 解决问题” 的逻辑。
三、与 gdb 的关系
cgdb 是 gdb 的 前端界面增强版:支持 GDB 几乎所有命令,同时优化了界面交互(代码高亮、分栏),适合需要 “边看代码边调试” 的场景;若习惯纯命令行,也可直接使用 GDB。