2.GDB调试研究调查设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
GDB调试研究调查设计书
变更记录
目录
变更记录 (2)
目录 (3)
1.概要 (5)
1.1.工作范围 (6)
1.2.参考资料 (7)
2.调试命令 (8)
3.主要命令用法 (9)
3.1.list (9)
3.2.run (10)
3.3.set args (10)
3.4.break (11)
3.4.1.break 行号 (11)
3.4.2.break 函数名 (11)
3.4.3. info breakpoints (12)
3.4.4. disable breakpoints Num (12)
3.4.5. enable breakpoints Num (12)
3.5.step (12)
3.6.next (13)
3.7.until (13)
3.8.finish (14)
3.9.stepi和nexti (14)
3.10.print表达式 (14)
3.11.backtrace (15)
3.12.display 表达式 (15)
3.13.watch 表达式 (15)
3.14. kill (16)
3.15. help 命令 (16)
3.16. call函数(参数) (17)
3.17. layout (17)
yout src (17)
yout split (18)
yout regs (18)
3.18. shell 命令 (19)
3.19. cd (19)
3.20. pwd (19)
3.21. info program (19)
3.22. clear 行号n (20)
3.23. delete 断点号n (20)
3.24. quite (20)
4.文档测试代码示例 (21)
1.概要
GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB 这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。
1.1.工作范围
GDB可以观察另一个程序在执行时候的内部活动,或程序出错时发生了什么,错误发生在哪里。当我们想要调试一个新程序的时候,运行所要调试的程序,设置所有能影响程序运行的东西,保证程序能在指定条件下停止,当程序停止时,让你检查发生了什么,然后修改一个bug,再寻找下一个bug。GDB调试器可以帮助我们找出不容易发现的死机等段错误问题,指出程序非正常退出错误点发生在哪里,这对机顶盒新程序的测试有很大的便利性。
1.2.参考资料
(1)Linux程序设计(第三版)。
2.调试命令
1)l:(字母l)从第一行开始显示出源码;
2)break n: 再第n行设置断点;
3)break func: 在函数fun()的入口设置断点;
4)info break: 查看断点信息;
5)r: 运行程序;
6)n:单步执行;
7)c: 继续执行;
8)p: 打印变量的值;
9)bt: 查看函数的堆栈;
10)finish: 退出函数;
11)shell 命令行: 执行shell命令行;
12)set args参数: 指定运行时的参数;
13)show args参数: 查看设置好的参数;
14)cd : 相当于shell的cd;
15)pwd: 显示当前所在的目录;
16)info program : 查看程序是否在运行,进程号,被暂停的原因;
17)clear n: 清除第n行的断点;
18)delete n: 删除第n个断点;
19)disable n: 暂停第n个断点;
20)enable n: 开启第n个断点;
21)step: 单步调试如果有函数调用,则进入函数;与命令n不同,n是不进入调用的函数的。
3.主要命令用法
在使用GDB调试程序之前,请确保被调试的程序在编译时添加了调试信息(-g参数),例如用gcc编译的时候:gcc –g–o debug debug.c,用交叉编译器编译时也必须遵循这个规则。
启动GDB: GDB debug 如图3-1:
图3-1 启动GDB调试
3.1.list
简记为l,起作用就是列出程序的源代码,默认每次显示10行,前提是被调试程序路目下必须有源码文件。
list行号:显示以行号为中心前后10行代码:
图3-2 list 行号命令作用
list函数名:将函数名所在函数的源代码:
图3-3 list 函数命令作用
3.2.run
简记为r,起作用时运行程序,当遇到断点后,程序会在断点处停止运行,等待用户输入下一步的命令。
图3-4 run时停在断点处
如果程序运行之前没有设置断点,或者还没有运行到断点处程序就发生了异常错误,则GDB会告知错误发生的位置,以及打印发生错误的代码
图3-5 run时程序发生段错误
上图显示错误发生在t.c的第6行,错误代码为*p=0x00;
3.3.set args
设置程序运行是命令行参数