1. 基础概念
GDB是GNU发布的程序调试工具,主要的功能包括:
启动被调试的程序;
让程序在指定的位置停住;
在程序停止时查看程序的状态(如变量值)。
2. GDB的使用流程及方法
2.1 变异生成带有调试信息的可执行文件:gcc -g test.c -o test
2.2 启动gdb:gdb test
2.3 在main函数设置断点:break main
2.4 运行程序:run
2.5 利用其它gdb命令对程序进行调试
3. GDB命令(括号内为缩写命令)
3.1 list(l):查看程序代码,断点是执行到该语句的前一句
3.2 break(b) 函数名:在函数入口处添加断点
3.3 break(b) 行号:在某一行添加断点
3.4 break(b) 文件名:行号:在指定文件指定行号添加断点
3.5 info break:查看所有断点的信息
3.6 delet(d) 断点号:删除断点
3.7 print(p) 变量名:查看变量的当前值
3.8 next(n):但不运行程序(不进入子函数)
3.9 step(s):单步运行程序(进入子函数)
3.10 continue(c):继续运行程序(先在其他地方打断点)
3.11 set var = value : 设置变量的值
3.12 quit(q):退出gdb
在调试时遇到的一些奇怪的问题:
1. 在用gdb调试程序的时候,有时候打印变量时,会出现<optimized out>的情况,可在编译的时候加上-O0选项。gcc默认用-O2进行优化编译,用-O0告诉编译器不进行优化,在调试的时候才能正常显示变量的值。当然在产品发布的时候应该去除-g和-O0选项。