gdb调试部分总结:
GDB:是GNU开原组织发布的一个强大的UNIX下的程序调试工具,主要调试的是C/C++的程序,也可以说是调试的对象是进程。首先在编译时,必须把调试信息加到可执行文件中,使用编译器-g参数可以做到这一点,类似于vs图形界面调试时所使用的DEBUG版本,就是我们常说的开发版本,因包含调试信息,所占内存比较大。这一点在Linux下同样如此,你可以使用命令去查看gcc -g 和 gcc 编译出来的结果有何不同.
gcc -o main main.c
gcc -o main main.c -g(含调试信息)
如果没有-g,你将看不见程序的函数名、变量名,所代替的全是运行时的内存地址。当你用-g把调试信息加入之后,并成功编译目标代码以后,就可以看见。
GDB主要有以下四个功能。
- 启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。
- 可让被调试的程序在你所指定的调置的断点处停住。
- 当程序被停住时,可以检查此时你的程序中发生的事,根据操作的一些命令进行调试。
- 动态的改变你程序的执行环境。
GDB的一些基本命令:
l : 显示代码
b: 加断点(b+行号或者b+函数)/*b 12 not b+12*/
Info break: 显示断点
Delete: 删除断点
r : 运行程序/启动调试
n: 单步执行
s: 进入函数
f: 退出函数
p: 打印(p+valname变量的值,p+&valname变量的地址,p+*p指针所指的地址存储空间的值)
c: 继续运行运行到下一个断点
bt: 函数调用的栈关系
下面让我们通过调试例子来认识一下这些基本的命令
———