Chinaunix首页 | 论坛 | 博客
  • 博客访问: 56954
  • 博文数量: 22
  • 博客积分: 1546
  • 博客等级: 上尉
  • 技术积分: 230
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-20 20:33
文章分类
文章存档

2010年(22)

分类: LINUX

2010-07-24 11:26:30

一直不会使用gdb调试器,主要原因是它不像windows下那些编译环境有良好的图形界面,所以一再的排斥gdb调试器。遇到问题也是盲目寻找。下午花了些时间专门看了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.我已经成功设置了断点,可是我如何运行程序以便让它在断点处暂停?

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

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

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

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

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

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

使用print命令。具体如下:

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

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

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

熟悉以上命令便可以快速入门gdb,要熟练的使用调试器,当代码遇到问题时,多调试即可。

阅读(1496) | 评论(0) | 转发(0) |
0

上一篇:内存对齐

下一篇:线程ID的输出格式

给主人留下些什么吧!~~