软件开发--调试器GDB

一.GDB介绍

A.GDB
1.GNU项目中的调试器
2.可以追踪程序的执行,也可以恢复程序崩溃前的状态
B.GDB的重要性
1.软件不是一次性开发完成的(是软件就有bug,是程序就有问题)
2.调试时软件开发过程当中不可或缺的技术
C.GDB的常规应用
1.自定义程序的启动方式(指定影响程序运行的参数)
2.设置条件断点(在条件知足时暂停程序的执行)
3.回溯检查致使程序异常结束的缘由
4.动态改变程序执行流(定位问题的辅助方式)
D.GDB的启动方式
1.直接启动--gdb ,gdb test.out ,gdb test.out core,
2.动态连接--gdb test.out pid
示例:对以前的在开发中的辅助工具章提到使用addr2line对程序中出现的错误进行定位,该示例使用gdb调试来完成该操做
软件开发--调试器GDB软件开发--调试器GDB
运行过程图如图所示
软件开发--调试器GDB
从图中所标记的红线能够知道编译以及gdb的使用过程
1.首先使用gcc生成可调式的结果
2.使用gdb命令开启gdb调试
3.使用file test.out命令关联生成的结果
4.使用run命令生成结果 能够看到在标记5处知道程序出现的错误处
与以前的addr2line命令查找相比,gdb的操做就很快捷与方便
E.使用GDB进行断点调试
1.断电类型
a.软件断点:由非法指令异常实现(软件实现)
b.硬件断点:由硬件特性实现(数量有限)
c.数据断点:由硬件特性实现(数量有限)
F.软件断点的相关操做
a.经过函数名设置断点
1.break func_name
2.tbreak func_name
b.经过文件名行号设置断点
1.break file_name:line_num
2.tbreak file_name:line_num
软件调试的相关操做
软件开发--调试器GDB软件开发--调试器GDB
第一次GDB断点调试的过程以下所示
软件开发--调试器GDB
能够看到
1.在使用了start命令以后,在main函数的入口处25行生产了断点
2.使用break命令在37行生成断点而且使用info breakpoints查看该断点是否存在
3.继续运行程序发如今37行停住,使用set var命令与next命令对其继续查看
软件开发--调试器GDB
1.使用next命令以后该程跳出循环来到41行
2.使用tbreak命令在43行设置断点,继续运行发现程序正常
3.使用jump命令使其跳至45行,由结果能够得出程序关闭正常,能够猜想程序在43行处有问题
第二次调试过程
软件开发--调试器GDB软件开发--调试器GDB
1.主要使用tbreak func直接将断点设置在func函数并使用info breakpoints进行查看断点是否设置成功
2.继续运行能够看到提示在func.c:7处提示问题
3.执行return命令发现程序正常结束,能够知道函数在func.c:7出有问题ide

相关文章
相关标签/搜索