安德鲁

[转载].gdb调试器快速入门

0
阅读(1737)

转自:http://page.renren.com/600235506/note/494259631?ref=newsfeed&sfet=2012&fin=1&ff_id=600235506&feed=page_blog&tagid=494259631

调试在我们编写程序时占有重要的地位。在linux下如何使用gdb调试器?下面采用FQA的方式让你快速了解gdb调试器。

1.如何启动gdb调试器呢?

在终端输入 gdb 程序文件名 即可。注意gdb调试的是可执行文件,而不是源代码。因此此处的文件名应该是可执行程序文件名。成功进入gdb后会显示一大段文字说明,然后是gdb提示符:(gdb) 。

请注意在进入gdb之前应该按照如下方式编译源程序:

gcc -g test_gdb.c -o test_gdb

只有加入选项-g才能被gdb调试。

2.除了上述方法,还有其他方法进入gdb吗?

直接在终端输入:gdb,成功进入后,使用file命令装入要调试的程序。输入: file 程序文件名 即可。

3.我成功进入了gdb,如何退出呢?

使用quit命令,输入: quit 即可。

4.进入gdb后,我要查看源代码必须退出才能查看吗?

当然不用。下面的命令可以帮助你快速查看源码。

list: 显示10源代码,再次输入该命令显示接下来的10行。

list 1,10:显示从第一行到第10行的代码。

list 函数名:显示此函数名周围的代码。

5.gdb可以设置断点吗?如何设置?

在gdb中最简单的设置方式是:break 行号 在这一行设置断点。比如break 9 会在代码的第9行设置断点。当程序执行到第9行会自动暂停,此时,第9行代码还未执行。

你也可以使用:break 函数名 的方式在某个函数处设置断点,程序运行到这个函数内的第一条语句处会自动暂停。

你也可以这样设置断点:break 行号或函数名 if 条件 。它很好理解,当满足if条件语句时才会在指定的行号或者函数名处断点。

6.我发现我把断点设置错了,如何消除断点?

使用命令:clear 行号 即可删除。

7.我已经成功设置了断点,可是我如何运行程序以便让它在断点处暂停?

输入:run 即可。程序自动停止在第一个断点处。

8.我的程序运行的时候需要加参数,我还能继续使用run命令运行程序吗?

当然可以,只不过你要在run后加上你的参数,参数间用空格隔开。如:run 参数1 参数2  …..

9.有时候我并不确定程序具体哪一句有问题,我如何一步一步的查看语句?

两种命令:next和step。两者均可以一句一句的查看语句。但不同的是,next命令将函数调用看作一条语句,而step则会进入函数,一步步的执行函数内的代码。

10.如何让暂停的代码继续运行?

输入命令:continue。它可以让程序继续运行,直到程序运行完毕或者遇到下一个断点为止。

11.当程序在断点处暂停执行时,如何查看当前变量的值?

使用print命令。具体如下:

print 命令或者表达式:显示变量或表达式的值。

print 变量=值:为变量赋值。

以上命令属于基本的调试命令,更多的命令可以参考man手册。

熟悉以上命令便可以快速入门gdb,要熟练的使用调试器,还需要多多使用。

参考资料:人民邮电出版社 《Linux C编程实战》 董永清