Linux平台上使用gdb调试程序

Linux平台上使用gdb调试程序

gdb是Linux/UNIX平台下的一个程序调试工具,它是由GNU开源组织发布的。在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。

我们使用gdb时,主要用它来完成以下几个方面的工作。

1、启动程序,在启动时,可以按照你想要的环境来运行程序。

2、设置断点,什么是断点,这里不解释。断点可以是行数,程序名称或条件表达式。

3、查看信息,在运行到断点处时,可以查看程序的运行信息,显示变量的当前值。

4、分步运行:让程序一步一步的运行,便于观察程序运行的路径、变量值等。

5、改变环境:可以在程序运行时修改运行环境和程序变量。

一、加入调试信息

在使用gdb之前,必须在编程程序时加入供gdb使用的调试信息。且看下面例子:

gcc -g -o test.debug test.c

这个编译语句的作用是,对test.c做编译,生成一个test.debug文件,-g表示加入调试信息。加了-g后生成的目标文件将比不加的要大很多。如果在测试的时候,一般带上-g参数,以便可以调试;正常情况下发布一个软件,不加-g参数。

二、启动gdb

直接在终端输入gdb

三、加载需要调试的程序

这里我们把test.debug加入进来,命令如下:

在gdb的上下文环境中,输入:file test.debug

四、查看代码

其实加了-g参数编译时,编译的结果文件中就包含了源代码和其他调试信息。我们可以使用list命令来显示代码,如:

list 1

表示显示从第一行开始的10行代码。按Enter,显示接下去的10行。以此类推,直接显示完。

五、添加断点

在第x行加入断点,命令:

break x

六、查看断点

info breakpoint

delete可以删除当前停止处的断点。

七、运行程序

run

遇到断点后停止下来,输入next或step后会继续下一行;step进函数,next不进函数;输入continue会到下一个断点;

八、变量查看

print 变量名

当程序遇到断点停止下来后,即可通过print命令来查看变量当前值。