GDB调试工具
Mascot:射水鱼
GDB官网: https://www.gnu.org/software/gdb/
GDB适用的编程语言: Ada / C / C++ / objective-c / Pascal 等。
GDB的工作方式: 本地调试和远程调试。
目前release的最新版本为8.0,GDB可以运行在Linux 和Windows 操作系统上。
1. GDB简介
1.1 what is GDB?
(1)GDB【gnu debuger】是GNU 开源组织发布的一个强大的UNIX 下的程序调试工具。
(2)能够跟踪程序的执行【execute】,观察程序运行时内部的状态;当程序崩溃时【crashed】,查看程序崩溃前的状态。
1.2 GDB的功能 (plus other things in support of these)
(1)自定义程序的启动方式(指定影响程序运行时的参数)
(2)设置断点
(3)回溯检查导致程序异常结束的原因 【core dump】
(4)动态改变程序执行流 【可以跳过一些代码以此定位出问题的地方】
1.3 为什么需要 GDB?
(1)软件不是一次性开发完成的,在软件开发的任何阶段都有可能存在bug
(2)调试是软件开发中不可或缺的技术,调试工具对于软件开发很重要
2. GDB 和binutils工具集区别
GDB是动态分析工具,binutils工具集是静态分析工具。
3. gdb的启动及退出
3.1 gdb的启动
gdb的启动方式有3种,这3种方式分别适用不同的场合下。
(1) gdb <program>
这种方式是在GDB内操作可执行程序,可以在shell命令行输入gdb <program> 或者进入gdb后输入file <program>
(2)gdb <program> core
当程序执行发生异常时,会发生核心转储(core dump),产生core文件。可以使用gdb对core文件进行分析,定位问题所在的文件代码行。
(3)gdb attach pid
gdb可以动态的连接到一个进程上,使用之前使用 ps -aux 查看想要连接的进程的PID号。
3.2 gdb的退出
使用 quit / q / crtl +d 退出gdb。
【Tips】 使用GDB前需要完成的工作
(1)在编译C/C++源码时,需要添加 -g 选项,将调试信息添加到可执行文件中,供gdb使用
(2)Linux下默认是不产生core文件的,要使用 umilit -c unlimited 命令进行设置,这样才能产生供gdb使用的core文件
4. 使用GDB进行断点调试
断点的分类