基本调试手段

C语言程序设计调试技术(2)——基本调试手段<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

程序的基本调试手段有以下几种:标准数据校验、程序跟踪、边界检查和简化循环次数等。下面分别介绍之。

l         标准数据校验:在程序编译、连接通过以后,就进入了运行调试阶段。运行调试的第一步就是用若干组已知结果的标准数据对程序进行检验。标准数据的选择非常重要,一是要有代表性,接近实际数据;二是比较简洁,容易对其结果的正确性进行分析。另外,对重要的临界数据也必须进行检验。

l         程序跟踪:对于比较复杂的大型程序来说,上述标准数据检验一次就完全通过的可能性很小。通常程序中总是存在许多各种各样的错误(就好像出错是程序的基本特性,一个错误也没有的程序反倒是罕见的意外),还需要多程序进行细致的调试工作。

程序跟踪则是最重要的调试手段。程序跟踪的基本原则是让程序一句一句的执行(F7 F8),通过观察和分析程序执行过程中数据和程序执行流程的变化查找错误。就Turbo C而言,程序跟踪可以采用两种方法,一种是直接利用其集成环境中的分布执行、断点设置、变量内容显示等功能对程序进行跟踪,这种方法留在下一单元的编程与调试部分介绍;另一种是传统方法,通过在程序中直接设置断点、打印重要变量内容等来掌握程序的运行情况。例如,可以在程序中的关键部位插入这样的代码段:

/*--调试代码段-------------------------------------------------*/

printf(“break point 10:line 120---count>100\n”);

printf(“variable count=%d,x=%f,sum=%f\n,count,x,sum”);

getch();

/*--调试代码段结束-------------------------------------------*/

其中的变量可以根据程序的实际情况进行设计。使用getch( )函数的目的是要程序在执行到这一行时暂时停下来,从而可以让我们看清楚调试代码段所显示的信息。然后可以选择是否让程序继续执行。如果到这一断点时尚未发现错误,则可以按下任何一个键让程序继续运行到下一个断点;否则可使用组合键Ctrl+Break或者Ctrl+C键来中断程序,再使用编辑器对程序进行修改。在程序中的所有的问题都解决了之后,再将程序中所有的调试代码段统统删去,这种方法不但适用于 Turbo C,而且对于那些没有集成环境的C语言编译器来说就更为重要了。

l         边界检查:在设计检查用的数据时,要重点检查边界的特殊情况。例如,对于循环:

while(count<1000)

{

…………..

}

就应该设计数据检查count等于999、等于1000、等于0或者负数等情况。如果程序中有由if-else语句、switch语句等组成的分支结构,也应该设计相应的数据,使得分支中的每一条路径都要通过检查。

l         简化:在调试时,有时可以通过对程序进行某种简化来加快调试速度。例如减少循环次数、缩小数组规模、屏蔽某些次要程序段(如一些用于显示提示信息的子程序)等。但在进行简化工作时,一定要注意这种简化不能太过分,以至于无法代表原来程序的真实情况。例如,对于一个求解N元一次方程组的程序来说,仅将N等于2的情况调通是不够的,还不能保证该程序对于较大的方程组也能给出正确的结果。如果对于N=34的情况该程序也能正常工作,则在该程序中因为矩阵规模而出错的可能性就大大减少了(但这不说明该程序就一定没有错误了,例如如果该程序使用某种消元法,则还要考虑主对角线元素的绝对值过小或者为0的情况)。

posted on 2006-03-02 22:01 Aween's Blog 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/aween/archive/2006/03/02/341568.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值