C程序调试

来源:互联网 发布:百度新闻源排名优化 编辑:程序博客网 时间:2024/06/10 00:19

所谓程序调试时指对程序的查错和排错。

在调试程序时一般应该经过以下几个步骤

1、先进行人工检查,即静态检查。在写好一个程序后,不要匆匆忙忙上机,而应对纸面上的程序进行人工检查。这一步非常重要,它能发现程序设计人员由于疏忽而造成的多数错误。而这一步也往往容易被人忽视。有人总希望把一切推给计算机系统去做,但这样就会多占用及机器时间。而且,作为一个程序人员应养成严谨的科学作风,把每一步都要严格把关,不把问题留给后面的工序。

为了更有效地进行人工检查,所编写的程序应该注意力求做到以下几点:(1)应该采用结构化程序方法编程,以增加可读性;(2)尽可能多加注释,以帮助理解每段程序的作用;(3)在编写复杂的程序时,不要将全部语句都写在main函数中,而要多利用函数,用一个函数来实现一个单独的功能。这样既易于阅读也便于阅读也便于调试,各函数之间除了用参数传递数据这一渠道之外,数据间尽量少出现耦合关系,便于分别检查和处理。

2、在人工(静态)检查无误后,才可以上机调试。通过上机发现错误称为动态检查。在编译时给出语法错误的信息(包括哪一行有错以及错误类型),可以根据提示的信息具体找出程序中出错之处并改正。应当注意的是:有时提示的出错行并不是真正出错的行,如果在提示出错的行上找不到错误的话应当到上一行再找。另外,有时提示出错的类型并非绝对准确,由于出错的情况繁多而且各种错误互有关联,因此要善于分析,找出真正的错误,而不要只从字面意义上死扣出错信息。

  如果系统提示的出粗信息多,应该从上到下逐一改正。有时显示出一大片出错信息往往使人感到问题严重,无从下手。其实可能只是一二个错误。例如,对所用的变量未定义,编译时就会对所有含该变量的语句发出出错信息,只要加上一个变量定义,所有的错误都消除了。

3、在改正语法错误(包括”error“和”warmning“)后,程序经过link就可以得到可执行的目标程序。运行程序,输入程序所需的数据,就可以得到运行结果。应该对运行结果作分析,看他是否符合要求。 

4、运行结果不对,大多属于逻辑错误。对这类错误往往需要仔细检查和分析才能发现,可以采用以下方法

(1)将程序与流程图(或伪代码)仔细对照,如果流程图是正确的话,程序写错了,是很容易发现的。例如,复合语句忘记写花括号,只要一对照流程图就能很快发现。

(2)如果找不到错误,可以采用”分段检查“的方法。在程序不同的地方设置几个printf函数语句,输出有关变量的值,逐段往下检查,直到找到某一段中数据不对为止。这时就已经把错误局限在这一段中了。不断缩小”查错区“,就可以发现错误所在。

(3)以可以通过”条件编译“命令进行程序调试(在程序调试阶段,若干printf函数语句要进行编译并执行,当调试完毕,这些语句不要再编译了,不要再被执行了)。这种方法可以不必一一删除printf语句,以提高效率。

(4)如果在程序中没有发现错误,就要检查流程图有无错误,即算法有无问题,如果有则改之,接着修改程序。

(5)有的系统还提供debug工具,跟踪流程并给出信息,使用更为方便。


总之,程序调试是一项细致深入的工作,需要下功夫,动脑子,善于积累经验。上机调试的目的不仅是为了”验证程序的正确性“,而更是”掌握调试的方法和技术“。

0 0