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命令来查看变量当前值。