GDB是C++开发中用于调试的核心工具,通过g++ -g编译生成调试信息后,使用gdb ./program进入调试界面;可设置断点(break)、单步执行(next/step)、查看变量(print)、继续运行(continue)等;遇到崩溃可通过backtrace查看调用栈,结合watch、info locals等功能提升调试效率,熟练掌握后可在无IDE环境下高效排查问题。

调试是程序开发中必不可少的一环,GDB(GNU Debugger)是C++开发者在Linux环境下最常用的命令行调试工具。它能帮助你查看程序运行时的状态、检查变量值、单步执行代码、设置断点等,快速定位和修复问题。
启动GDB并加载程序
要使用GDB调试C++程序,首先需要在编译时加入调试信息。使用 -g 选项让编译器生成调试符号:
g++ -g -o myprogram myprogram.cpp然后用以下命令启动GDB:
gdb ./myprogram进入GDB交互界面后,可以输入命令控制调试过程。
立即学习“C++免费学习笔记(深入)”;
常用GDB操作命令
GDB提供了丰富的命令来控制程序执行和查看状态。以下是日常开发中最常用的几个:
- run (r):启动程序运行。可带参数,如 run arg1 arg2
-
break (b) 文件名:行号 或 函数名:在指定位置设置断点
例如:break main 或 break test.cpp:15 - next (n):逐行执行,遇到函数调用不进入
- step (s):逐行执行,遇到函数会进入其中
- continue (c):继续运行程序直到下一个断点或结束
- print (p) 变量名:打印变量当前值,如 p x
- list (l):显示源代码,默认显示当前行附近10行
- quit (q):退出GDB
实际调试示例
假设有一个简单的C++程序 test.cpp:
#include iostream>using namespace std;
int main() {
int a = 5;
int b = 0;
int c = a / b; // 这里会崩溃
cout return 0;
}
编译并进入GDB:
g++ -g -o test test.cppgdb ./test
在GDB中设置断点并运行:
(gdb) break main(gdb) run
(gdb) next
(gdb) print a
(gdb) print b # 发现 b 为 0,可及时发现问题
当程序因除零异常终止时,可用 backtrace (bt) 查看调用栈,帮助定位错误源头。
其他实用技巧
除了基本操作,GDB还有一些增强调试效率的功能:
- watch 变量名:设置观察点,当变量值改变时自动中断
- info locals:显示当前函数所有局部变量的值
- backtrace:查看函数调用栈,排查崩溃位置
- signal SIGINT:模拟发送信号(如Ctrl+C)
- 支持在GDB中修改变量值,例如:set var a = 10
这些功能在复杂逻辑或难以复现的问题中特别有用。
基本上就这些。掌握GDB的基本用法后,调试C++程序会变得高效很多。关键是多练习,在真实项目中尝试设置断点、查看变量、跟踪执行流程。熟练之后,哪怕没有IDE也能轻松排查问题。










