GDB概要与程序调试例子
- GDB简介
GDB是GNU开源组织发布的一个强大的Linux下的程序调试工具。
一般来说,GDB主要帮助你完成下面四个方面的功能:
(1)启动你的程序,可以按照你的自定义的要求随心所欲的运行程序(按着自己的想法运行)。
(2)可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
(3)当程序被停住时,可以检查此时你的程序中所发生的事。4、你可以改变你的程序,将一个BUG产生的影响修正从而测试其他BUG。
- GDB基本调试命令
man GDB :查看GDB帮助手册
- 例子1
gdb a.out //进入调试中
按小l //查看代码
b 10/(b main) //给指定位置设置断点
r //运行到断点
c //全部执行
- 例子2
gdb a.out
b main //设置断点
r //运行至断点
n //运行下一处
pi //打印i值
p&i //打印i地址
- 例子3
gdb a.out
b 12
r
n
s //进入函数体内
n //在函数体内执行下一个
- 例子4
gdb a.out
help //查看帮助手册
q //退出
2. GDB调试工具
Int * p=NULL;
*p=10;
错误:p指针指向空,不能赋值,越界
3.1如何调试上述代码,知道错误区间呢?
3.使用GDB调试
gcc main.c //由于不是编译错误,所以不会报错
./a.out //报错segmentation fault(core dumped)
<运行后,系统自动生成core文件,内容为错误详细说法>
gdb a.out core //显示断错误
q //退出
3.2如何调试运行中的程序呢?
<1.打开命令行>
Gcc -g main.c //-g调试工具(GNU的gdb)所必要的符号资讯
./a.out
<2.打开新的命令行>
Ps aux | grep a.out //查看pdi,进程号
//查到4849
Gdb a.out -p 4849 //-p是运行调试必备东西
(n下一条,q退出)