一起talk GDB吧(第二回:GDB单步调试)

各位看官们,大家好,我们在上一回中说简单地介绍了GDB。这一回中,我们介绍GDB的调试功能:单步

调试。闲话休提,言归正转。让我们一起talk GDB吧!

看官们,我们先说一下什么是单步调试。大家都知道,程序是按照指令,一步一步地执行,只是程序运行

的很快,所以你没有办法看到走过的每一步。这个有点类似我们平常走路,一步一步地向前走,在路上可

以看到许多风景,如果坐车,那么车速太快了,就会看不清楚路上的风景。单步调试就是不让程序很快地

执行,通俗点说,说是不让程序“坐车”走,让程序一步一步地运行。

我们来看看如何使用GDB让程序一步一步地运行。详细的步骤如下:

这里有个技巧和大家共享一下:执行完第一个n命令后,如果想继续执行n命令,那么只需要按下回车键就

可以继续执行n命令,而不需要继续输入n,因为在GDB中回车键表示重复执行它前面的命令,这个有点类似

Linux中的点命令。

在单步调试过程中遇到程序中的函数时,会把函数调用当做一个整体,大家可能不理解,没关系,咱们举个

例子:程序中有以下三条语句:

a =5;b = 3;

c =min(a,b); //min是求最小值的一个函数

printf("min is :%d",c);

当程序运行到“a =5;b = 3;”这行时,使用单步调试命令n,,程序会运行到“c =min(a,b);”这一行,如果再执行

单步调试n,那么程序会运行到“printf("min is :%d",c);“这一行。大家都知道,函数是多个语句组成的,不

会一步就运行完,但是单步调试的时候把函数看成了一个整体,让它一步运行完。如果我们想看函数中每

个语句的运行步骤,怎么办?看官莫急,强大的GDB不会让我们失望的,我们可以使用GDB的命令:step

(缩写为s),使用该命令可以进入函数中。然后就能使用单步调试命令,一步一步地看清楚函数中每条语句

的运行步骤了。如果想从函数中跳出来可以使用命令:finish.这时程序会调用函数的地方,也就是我们例子

中“printf("min is :%d",c);“这一行。

看官们,通过单步调试,我们可以看到程序运行的“脚印”。在调试过程中,如果看到程序运行步骤与我们

事先给程序设计好的步骤不一样,那么说明程序没有按照我们设计的步骤走。这肯定是有地方出问题了,

我们需要把出问题的地方找出来。因为程序是一步一步地运行,所以我们很容易找到哪一步出了问题,进

而找出问题的原因。这便是单步调试的作用。当然了,单步调试还有其它的作用,它可以和其它调试方法

一起配合使用,至于是什么调试方法,我们以后在的章回中会介绍。

我们平时还觉得电脑上的程序不够快呢,你还不让它“坐车”,让它步行,这不让电脑更加慢了吗?看官说的

有道理。不过,我们通过单步调试让程序执行慢下来,目的是为了看清楚程序每一步执行时的样子,这样

有助于我们发现程序中错误,进而方便我们修改程序中错误。试想一下,程序“坐着车”跑的那么快,你还没

有看清楚它的样子,它已经跑的无影无踪,更不要说找它的执行时的错误了。

看官们,关于GDB的内容,今天咱们就说到这里。欲知后事如何,且听下回分解!

版权声明:本文为博主原创文章,未经博主允许不得转载。

年轻是我们唯一拥有权利去编织梦想的时光

一起talk GDB吧(第二回:GDB单步调试)

相关文章:

你感兴趣的文章:

标签云: