Aween

向.NET进发

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C语言程序设计调试技术(1)—— 运行错误的判断与调试

通常所说的运行错误有两种,一种是逻辑错误,即程序的实际运行结果核对程序结果的期望不符;另一种是程序设计上的错误,但他躲过了编译程序和连接程序的检查,通常表现为突然死机、自行热启动或者输出信息混乱。

相对于编译和连接错误来说,运行错误的查找和判断更为困难。编译和连接错误分别由编译程序和连接程序检查,尽管有时它们报告的出错信息和错误的实际原因之间有一些差距,但总还可以作为查错时的一种参考。而运行错误就不同了,很少或根本没有提示信息,只能靠程序员的经验来判断错误的性质和位置。下面简单的介绍一些常见运行错误的调试方法。

一种逻辑错误是由于在设计程序的算法时考虑欠周到引起的,如对边界和特殊情况未作妥善处理。例如下面所示的循环:

while(count)

{

  ……….

  count=count-1;

}

程序员的构思是进行count次循环。但是,如果count中原来的值为负数时,此循环就成了一个“死循环”而导致无法停机,显然是错误的。但是编译程序无法查出这类错误,只有到了程序运行之后才有可能发现。再如,在利用海伦公式计算三角形面积时,首先应该检查给出的三条边长是否确实可以构成一个三角形,否则计算结果时没有意义的;而在编写求解一般实系数一元二次方程的程序时,必须在程序中设计处理复数情况的程序段,以免对负数求平方根。通常在手算时不用事先考虑这些问题,可以在确实发生了问题以后在提出解决的方法。但是程序是为计算机设计的,而计算机并没有自行应变的能力,程序员必须事先将一切可能遇到的情况考虑周全,尤其是对于那些受用户委托设计或者作为商品出售的软件更是如此。

另一种常见的逻辑错误是由于程序输入时的打字错误造成的,例如将判断条件中的“〉=”误输入为“〉”,将相等判断“= =”误输入为赋值号“=”等。含有这类错误的程序在运行时出现的故障现象多种多样,而且通常很难与错误的原因联系起来。

输入的数据中包含错误或者输入数据的格式不符合要求当然也会影响到程序的运行结果,特别是在数据量比较大,而又采用键盘直接输入数据时更容易产生这类错误。我们建议在数据量比较大时采用文件方式存放数据,程序通过文件读写来输入输出数据,这样可以通过编辑数据文件来修改其中的错误,并且在重复计算或者调试程序时也就不用反复输入数据了。这种方法非常适宜于科学和工程计算类应用程序中的数据处理。另一种方法是避免使用C语言的scanf( )函数输入数据,而代之以自行编写的、具有比较完善的数据校验功能的输入模块。这种方法通常用于数据处理、事务管理等比较复杂的应用程序的开发中,通常将数据输入和用户界面等模块结合起来统一进行设计,这需要较高的编程技巧。

posted on 2006-03-02 21:56  Aween's Blog  阅读(492)  评论(0编辑  收藏  举报