GDB调试深度探索:从基础到高级技巧
需积分: 34 12 浏览量
更新于2024-07-20
1
收藏 901KB PDF 举报
"gdb使用技巧"
gdb(GNU Debugger)是Linux和其他Unix-like操作系统下广泛使用的C/C++程序调试工具。这篇文档详尽地介绍了gdb的各种使用技巧,涵盖了从基本操作到高级特性的各个层面,帮助开发者更有效地调试程序。
1. 信息显示:
- 显示gdb版本信息:`show version` 命令可以查看gdb的当前版本。
- 显示gdb版权相关信息:使用 `show copyright` 命令查看gdb的版权信息。
- 启动时不显示提示信息:启动gdb时可以添加`--quiet`选项来避免显示欢迎信息。
- 退出时不显示提示信息:配置环境变量`GDB_TERMINATE_SIGNAL`为SIGKILL可避免退出提示。
- 不暂停输出:设置`set pagination off`可使gdb在输出大量信息时不暂停。
2. 变量:
- 设置变量值:`set variable var = value` 命令用于更改变量的值。
3. 字符串:
- 打印ASCII和宽字符:使用`print`命令结合格式化字符串来打印ASCII和宽字符。
- 改变字符串值:通过设置变量的方式修改字符串内容。
4. 函数:
- 列出函数名:`info functions` 命令可以列出已知的函数名。
- 进入/退出调试:`step` 和 `finish` 命令分别用于进入函数和退出当前函数。
- 直接执行函数:`call function_name()` 可以在当前上下文中执行函数。
- 堆栈帧操作:`frame` 命令用于选择和切换函数堆栈帧,`backtrace` 查看函数调用栈。
5. 断点:
- 设置断点:可以基于匿名空间、地址、入口点、文件行号等设置断点,如`break <location>`。
- 保存断点:`save breakpoints filename` 保存断点设置,`load breakpoints filename` 加载。
- 条件断点:`break <location> if condition` 在满足条件时才暂停。
6. 观察点:
- 设置观察点:`watch expr` 监视变量的改变,`rwatch expr` 监视读操作,`rwatch expr` 监视读写操作。
- 特定线程:`watch -t thread_num expr` 限制观察点只对特定线程有效。
7. Catchpoint:
- 一次性触发:`catch once <event>` 只让catchpoint触发一次。
- 系统事件:如`catch fork`、`catch vfork`、`catch exec`、`catch syscall` 分别对应特定的系统调用。
8. 打印:
- 打印各种内容:包括STL容器、大数组、函数局部变量、内存、内存块、源代码行等。
- 指定输入输出:`set debug-file descriptor` 和 `set logging redirect` 可以改变输入输出设备。
- 特殊变量:`$_` 和 `$_$__` 分别表示最后一个表达式的结果和上一个结果的拷贝。
9. 多进程/线程:
- 调试已运行进程:`attach pid` 命令附加到进程。
- 调试子进程:`set follow-fork-mode child` 配置gdb跟随子进程。
- 查看线程:`info threads` 显示所有线程信息。
- 控制线程行为:如`thread`命令切换线程,`set non-stop on/off` 控制是否同时运行所有线程。
通过熟练掌握这些技巧,开发者可以更高效地定位和修复程序中的错误,提升开发效率,确保软件质量。gdb的灵活性和强大功能使得它成为C/C++开发者的得力助手。
2018-07-23 上传
2012-10-21 上传
2018-05-04 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
siyelangshao
- 粉丝: 1
- 资源: 14
最新资源
- 前端面试必问:真实项目经验大揭秘
- 永磁同步电机二阶自抗扰神经网络控制技术与实践
- 基于HAL库的LoRa通讯与SHT30温湿度测量项目
- avaWeb-mast推荐系统开发实战指南
- 慧鱼SolidWorks零件模型库:设计与创新的强大工具
- MATLAB实现稀疏傅里叶变换(SFFT)代码及测试
- ChatGPT联网模式亮相,体验智能压缩技术.zip
- 掌握进程保护的HOOK API技术
- 基于.Net的日用品网站开发:设计、实现与分析
- MyBatis-Spring 1.3.2版本下载指南
- 开源全能媒体播放器:小戴媒体播放器2 5.1-3
- 华为eNSP参考文档:DHCP与VRP操作指南
- SpringMyBatis实现疫苗接种预约系统
- VHDL实现倒车雷达系统源码免费提供
- 掌握软件测评师考试要点:历年真题解析
- 轻松下载微信视频号内容的新工具介绍