没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
2016/7/21 调试|HaHack
http://hahack.com/wiki/cdebug.html#无调试器调试 1/7
调试
跟踪调试:GDB
为调试做好准备
在 GDB SHELL 中调试
常用命令
GDB 之歌
高级功能
GDB的可视化前端
DDD
内存调试:valgrind
Valgrind 体系结构
使用 Valgrind
无调试器调试
core dump
printf 调试
assert 断言
调试宏
总结
深入阅读
Comments
跟踪调试:GDB
gdb 是由 GNU 软件系统社区提供的调试器,同 gcc 配套组成了一套完整的开发环境,可移植性很好,支持非常多的体系结构并被移植到各种系统中
(包括各种类 Unix 系统与 Windows 系统里的 MinGW 和 Cygwin )。此外,除了 C 语言之外,gcc/gdb 还支持包括 C++、Objective-C、Ada 和
Pascal 等各种语言后端的编译和调试。 gcc/gdb 是 Linux 和许多类 Unix 系统中的标准开发环境,Linux 内核也是专门针对 gcc 进行编码的。
gdb 的吉祥物是专门捕杀 bug 的射手鱼:
For a fish, the archer fish is known to shoot down bugs from low hanging plants by spitting water at them.
为调试做好准备
通常,在为调试而编译时,我们会(在尽量不影响程序行为的情况下)关掉编译器的优化选项(-O), 并打开调试选项(-g)。另外,-Wall 选项打开所有
warning,也可以发现许多问题,避免一些不必要的 bug:
1 $ gcc -g -Wall program.c -o program
-g选项的作用是在可执行文件中加入源代码的信息,比如可执行文件中第几条机器指令对应源代码的第几行,但并不是把整个源文件嵌入到可执行文件
中,所以在调试时必须保证gdb能找到源文件。
如果使用Makefile进行编译,可以在执行make时使用CFLAGS=-g选项,将可以为每次编译都添加-g选项。详见直接在命令行定义Makefile变量
在 GDB SHELL 中调试
编译好之后用 gdb 启动要调试的程序:
1 $ gdb program
之后会出现 gdb 的 shell,输入
1 run args
即可启动程序,args 是传递给程序的命令行参数。当然,在启动之前,通常会先设置断点,并熟悉一下相关的命令。
常用命令
以下列出一些常用的命令(括号里的字符表示缩写,具体语法请参见帮助文档):
命令 描述
backtrace(或bt) 查看各级函数调用及参数,与where命令等效。
break(或b) 设置断点。break if 可以设置断点在满足某个条件时才激活,如break 9 if num != 0。
delete(或d) delete 是一系列命令,最常用的是删除断点 delete breakpoints 断点号,不加断点号则提问是否删除所有断点。
HaHack
Archive
Categories
Tags
wiki
Subscribe
RSS
WeChat
Toutiao
About
不知者无胃口
- 粉丝: 27
- 资源: 328
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 目标检测-零售食品LOGO检测数据集-5000张图-+对应VOC-COCO-YOLO三种格式标签+数据集划分脚本
- 目标检测-零售食品LOGO检测数据集-1000张图-+对应VOC-COCO-YOLO三种格式标签+数据集划分脚本
- Delphi 12 控件之LMD.VCL.Full.Version.zip
- 计算机科学选修课:人工智能导论 第二节 PPT
- 计算机科学选修课:人工智能导论 第一章 PPT
- 忘记navicat密码时,此工具可以帮您查看密码
- 电子商务-电子商务平台-水果销售-在线购物-果库小程序.zip
- 基于React的后台开发框架(javascript)
- 用户界面设计-滑动选项卡-交互组件-用户体验-滑动选项卡小程序.zip
- 371系列智能型电动执行机构说明书
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0