GDB是C++调试核心工具,需编译时加-g选项;用gdb ./program启动,支持设断点(break)、单步执行(step/next)、查看变量(print)和调用栈(backtrace);可通过core文件分析段错误原因。

在C++开发中,GDB(GNU Debugger)是调试程序最强大的工具之一。它能帮助你定位段错误、逻辑错误、内存问题等。掌握GDB命令行调试技巧,能显著提升排查问题的效率。
启动GDB并加载程序
编译程序时必须加入 -g 选项以包含调试信息:
g++ -g -o myprogram myprogram.cpp然后用以下命令启动GDB:
gdb ./myprogram也可以直接运行带参数的程序:
立即学习“C++免费学习笔记(深入)”;
gdb --args ./myprogram arg1 arg2设置断点与控制执行流程
断点是调试的核心功能。常用命令包括:
- break main —— 在main函数入口处设断点
- break 20 —— 在当前文件第20行设断点
- break filename.cpp:15 —— 在指定文件某行设断点
- break func_name —— 在函数名处设断点
- run —— 启动程序运行(可加参数:run arg1)
- continue (c) —— 继续执行直到下一个断点
- next (n) —— 执行下一行(不进入函数内部)
- step (s) —— 单步执行,进入函数内部
- finish —— 执行完当前函数并返回
查看变量与调用栈信息
程序暂停时,可以检查变量值和调用路径:
- print variable_name 或 p variable_name —— 输出变量当前值
- print &variable —— 查看变量地址
- print *ptr —— 查看指针指向的内容
- display variable —— 每次暂停时自动显示该变量
- backtrace (bt) —— 显示完整的函数调用栈
- frame n —— 切换到第n层栈帧
- info locals —— 查看当前函数所有局部变量
处理段错误与核心转储(Core Dump)
当程序崩溃产生 core 文件时,可用GDB分析原因:
gdb ./myprogram core或指定core文件名(如core.1234):
gdb ./myprogram core.1234进入后使用 bt 命令查看崩溃时的调用栈,快速定位出错位置。
确保系统允许生成core文件:
ulimit -c unlimited基本上就这些。熟练使用GDB的关键在于多练习——比如故意制造空指针解引用、数组越界等问题,再用GDB一步步排查。调试不是被动等待报错,而是主动探索程序行为的过程。










