GDB的使用,无他,唯需手熟尔

简介:

GDB是GUN发布的一款功能强大的程序调试工具。GDB主要完成下面三个方面的功能:
1.启动调试程序.
2.让被调试的程序在指定的位置停住(即可以设置断点)。
3.当成被停住时,可以检查程序的状态(如变量值等等)。

如何启动GDB?
启动GDB很简单,如下所示:
gdb 调试程序名   例如 :gdb a
或者:gdb
   file 可执行文件名
例如:gdb
   file a

既然我们都已经能够启动GDB了,那么我们来一起看一下GDB都有哪些命令。
注意:GDB中的这些命令是有全名和缩写,在括号内的为缩写

命令:help 作用:显示gdb的使用帮助信息,后可接命令名,显示命令的使用信息
命令:list(l)  作用:查看源程序
命令:bt     作用:显示程序的堆栈
命令:print vars 作用:打印此时vars变量的值
命令:break(b) 函数名 作用:在某函数入口处添加断点
命令:break(b) 行号     作用:在指定行添加断点
命令:break(b) 文件名 行号 作用:在指定文件中的指定行添加断点
命令:break(b) 行号 if 条件 作用:当条件为真时,指定行号出断点生效
例如:b 5 if i = 10,当i = 0 成立时,在第5行的断点生效
命令:info break 作用:查看所有设置的断点
命令:delete 断点编号 作用:删除断点
命令:run(r) 作用:开始运行程序
命令:next(n) 作用:单步运行程序(不进入子函数)
命令:step(s) 作用:单步运行程序(进入子函数)
命令:continue(c) 作用:继续运行程序
命令:quit 作用:退出gdb调试程序
以上是一些比较常用的GDB调试时用的命令吧,更详细的关于如何使用GDB的信息大家可以参考GNU的GDB使用手册。

下面来看一下我们用GDB调试程序的流程:
注意:下面以源文件a.c为例

如果我们想用gdb来调试程序,当我们用gcc来编译程序的时候需要加上-g选项,以便使生成的可执行程序中加上gdb所需要的各种信息.
1.gcc -Wall -g a.c -o a

编译好程序后,我们来启动gdb来进行调试可执行程序a
2.gdb a

我们在main函数处设置断点
3.break main 或者 b main

我们让程序执行,在main处停住
4.run

下面我们就可以单步执行,然后来获取你想要的信息(变量值等)
5.next

当我们所需的信息都获取了以后就可以让程序继续执行到完了
6.continue

最后我们从gdb中退出来
7.quit

gdb就这些内容吧,希望坛友们可以自己写一个简单的C程序,然后在启动gdb调试一下,尽量把每个命令都使用到,这样时间长了,命令你就会都记住了,切记不要死记硬背。
posted @ 2012-09-24 10:35  javaadu  阅读(130)  评论(0编辑  收藏  举报