Linux 下 C/C++ 调试器 GDB/Cgdb 实战指南
在 Linux 环境下开发 C/C++ 程序时,调试是定位问题不可或缺的一环。很多人习惯直接发布 Release 版本,却忽略了 Debug 模式对排查 Bug 的重要性。
编译准备:开启调试信息
程序发布通常分为 Debug 和 Release 两种模式。Debug 模式下生成的可执行文件包含完整的调试符号,方便工具分析;Release 模式则为了优化体积和性能,会剥离这些信息,导致调试器无法正常工作。
默认的 gcc 或 g++ 命令生成的是 Release 版本。要启用调试功能,必须在编译命令后加上 -g 选项:
gcc -o test test.c -g
如果是使用 Makefile,记得在规则中加入 -g,例如:
gcc -o $@ $^ -g
启动与界面选择
确保系统已安装 gdb 或 cgdb。CGDB 是 GDB 的前端增强版,采用分屏设计,能直接在屏幕左侧显示源代码,右侧显示调试状态,比纯命令行更直观。
启动调试器非常简单:
gdb ./test
# 或者
cgdb ./test
退出调试会话可以使用 Ctrl+D 快捷键,或在提示符下输入 quit。
进入 GDB 后默认看不到代码,需要使用 list 命令(简写 l)查看源码。每次显示 10 行左右:
l:显示当前上下文代码l 函数名:列出指定函数的代码l 文件名:行号:从指定文件的某一行开始显示

实际开发中,CGDB 的分屏体验更好,后续演示将基于 CGDB 进行。

核心调试命令
掌握几个基础命令就能解决大部分问题。GDB 支持回车自动重复上一条命令,这能极大提升操作效率。
运行控制
r(run):启动程序。中途想重头再来,再次输入r即可。c(continue):从当前位置继续执行,直到遇到下一个断点或程序结束。finish:执行完当前函数并返回调用处。until 行号:跳过循环体,直接执行到指定行号。
断点管理
断点是调试的锚点。设置断点后,程序会在该行暂停。









