本文所述主要的是Linux调试工具GDB的使用教程,具体如下。
<>强声明:强>本博客内容是由本人经过实验楼教程整理得来。
GDB,是GNU项目调试器的缩写,是Linux下功能全面的调试工具.GDB支持断点,单步执行,打印变量,观察变量,查看寄存器,查看堆栈等调试手段。在Linux环境软件开发中,GDB是主要的调试工具,用来调试C和c++程序。
下面给出一个具有buging.c的程序:
(yqtao@localhost linux)猫buging.c美元 # include & lt; stdio.h> int getSum (int n) { int和=0,我; (i=1; i<=n;我+ +) +=我总和; 返回总和; } int main () { int res=getSum (100); printf (" 1 + 2 +…+ 100=% d \ n ", res); } >之前如果要调试程序,则在进行gcc编译的时候要加上- g参数
<代码> gcc - g - o窃听bugging.c 代码>
进入gdb:
<代码> gdb错误代码>
部分gdb命令:
//查看源码//查看第几行附近//可简写成l 2 (gdb)清单2所示 1 # include & lt; stdio.h> 2 int getSum (int n) { 3 int和=0,我; 4 (i=1; i<=n;我+ +) 5 +=我总和; 6返回总和; 7}//查看主要函数附近的源码 主要(gdb)列表 3 int和=0,我; 4 (i=1; i<=n;我+ +) 5 +=我总和; 6返回总和; 7} 8 int main () { 9 int res=getSum (100); 10 printf (" 1 + 2 +…+ 100=% d \ n ", res); 11}//设置断点//中断+ n在第几行设断点 (gdb) 8 断点1 0 x4004fa:文件错误。c, 8号线。//中断+函数名,在函数名处设断点 (gdb)打破getSum 断点2 0 x4004cb:文件错误。c,第3行。//查看断点信息 (gdb)信息断点 Num类型Disp Enb解决什么 1断点保持y 0 x00000000004004fa主要在buging.c: 8 2断点保持y 0 x00000000004004cb getSum buging.c: 3断点信息中每一项的信息:
1。Num列代表断点编号,该编号可以作为删除/enalbe/禁用等控制断点命令的参数
2.类型列代表断点类型,一般为断点
3.Disp列代表断点被命中后,该断点保留(保持),删除(del)还是关闭(dis)
4.Enb列代表该断点是使(y)还是禁用(n)
5.地址列代表该断点处虚拟内存的地址
6.所列代表该断点在源文件中的信息//删除断点//删除+ n或d + n//如果不加数字则删除全部的断点 (gdb) d 2 (gdb)信息断点 Num类型Disp Enb解决什么 1断点保持y 0 x00000000004004fa主要在buging.c: 8关闭和启用断点:
有时候,我们会遇到这种情况:有些断点可能暂时不用但又不想删除,那么可以禁用。
禁用+ n//关闭断点 启用+ n//启动断点
以本文开头的buging.c文件为例,进行单步调试。
//进入gdb (yqtao@localhost linux)美元gdb bug//在main()函数处设断点 (gdb)信息断点//运行程序 (gdb)运行 在buging.c断点,main (): 9 9 int res=getSum (100);注意:我们要进入函数要是用步骤(s),而单步执行下(n),接下来是不进入函数内部的,要区分两者的关系。
(gdb)步骤 在buging.c getSum (n=100): 4 4 (i=1; i<=n;我+ +)//查看代码 (gdb) l 1 # include & lt; stdio.h> 2 int getSum (int n) { 3 int和=0,我; 4 (i=1; i<=n;我+ +) 5 +=我总和; 6返回总和; 7} 8 int main () { 9 int res=getSum (100); 10 printf (" 1 + 2 +…+ 100=% d \ n ", res);//下一步 (gdb) 5 +=我总和;//打印求和的值//看到总和是为赋初值的 (gdb) p和 1美元=4195633//info locals//打印当前断点处所在函数的所有局部变量的值,不包括函数参数。 当地人(gdb)信息 金额=4195635 我=3<强>其余的一些命令:强>
结束执行程序到当前函数结束
继续
执行程序到下个断点
到
直到N,执行程序到源代码的某一行
Linux调试工具GDB使用简易教程