1 GDB简介
什么是GDB?
GNU项目中的调试器(gnu debuger),能够跟踪程序的执行,也能恢复程序崩溃前的状态。
为什么需要GDB?
软件不是一次性开发完成的(是软件就有bug,是程序就有问题),调试是软件开发过程中不可或缺的技术(调试工具很重要)。
GDB的常规应用
- 自定义程序的启动方式(指定影响程序运行的参数)
- 设置条件断点(在条件满足时暂停程序的执行)
- 回溯检查导致程序异常结束的原因(Core Dump)
- 动态改变程序执行流(定位问题的辅助方式)
GDB和addr2line工具的本质区别
addr2line是静态分析工具,关注的是程序文件;GDB是动态分析工具,关注的是进程。
2 GDB的启动方式
直接启动
- gdb
- gdb test.out
- gdb test.out core
动态连接
- gdb test.out pid
GDB应用举例
test.c
#include <stdio.h>
#include <unistd.h>
extern int* g_pointer;
extern void func();
void test_1()
{
printf("test_1() : %p\n", test_1);
}
void test_2()
{
printf("test_2() : %p\n", test_2);
}
void test_3()
{
printf("test_3() : %p\n", test_3);
}
int main(int argc,