编译时需加-g选项生成调试信息,用gdb启动后可设置断点、单步执行、查看变量和调用栈,结合core文件分析崩溃,提升调试效率。

使用 GDB 调试 C++ 程序是开发过程中排查问题的重要手段。要让 GDB 正常工作,编译时必须加入调试信息。最常用的方式是使用 -g 编译选项:
g++ -g -o myprogram myprogram.cpp
这样生成的可执行文件包含了变量名、行号等调试信息,GDB 才能准确显示代码位置和变量内容。
启动与基本操作
用 GDB 启动程序:
gdb ./myprogram
进入 GDB 后,常用命令包括:
立即学习“C++免费学习笔记(深入)”;
run (或 r):运行程序,可带命令行参数,如 run arg1 arg2 quit (或 q):退出 GDB help:查看帮助,例如 help break
设置断点与单步执行
断点是调试的核心功能,可以在关键位置暂停程序运行。
break main:在 main 函数入口设断点 break 15:在当前文件第 15 行设断点 break myfile.cpp:20:在指定文件第 20 行设断点 break func_name:在函数名处设断点 info breakpoints:查看所有断点 delete 1:删除编号为 1 的断点
程序暂停后,可以逐步执行:
next (n):逐行执行,不进入函数内部 step (s):逐语句执行,会进入函数 finish:运行到当前函数结束 continue (c):继续运行直到下一个断点
查看变量与调用栈
调试时经常需要检查变量值和函数调用关系。
print variable_name (或 p):打印变量值,支持表达式如 p a + b display x:每次暂停时自动显示变量 x 的值 undisplay num:取消某条 display 显示(num 来自 info display) backtrace (或 bt):显示当前调用栈,查看函数调用链 frame n:切换到第 n 层栈帧,方便查看局部变量 up / down:在调用栈中上下移动
对于 C++ 对象,print 可以显示成员变量,比如 p obj 或 p obj.member。
处理崩溃与核心转储
如果程序崩溃并生成了 core 文件,可以用 GDB 加载分析:
gdb ./myprogram core
然后输入 bt 查看崩溃时的调用栈,快速定位出错位置。
确保系统允许生成 core 文件,可通过命令 ulimit -c unlimited 开启。
实用技巧
使用 list (l) 显示源代码,默认显示当前行附近 10 行 layout src:进入 TUI 模式,分屏显示源码(终端支持时) set args arg1 arg2:预先设置运行参数,避免每次 run 都输入 catch throw:捕获 C++ 异常抛出,便于调试异常流程 在 GDB 中修改变量值:set variable x = 10,可用于测试不同分支
基本上就这些。GDB 功能强大,熟练掌握几个关键命令就能显著提升调试效率。关键是编译加 -g,合理设断点,善用 print 和 backtrace,遇到崩溃用 core 分析。不复杂但容易忽略细节。
以上就是c++++中怎么用GDB调试程序_c++ GDB调试命令与技巧的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1478853.html
微信扫一扫
支付宝扫一扫