代码调试
测试本身也就属于程序调试的过程中的一部分。
调试是验证程序的运行是否符合自己的设计
程序调试步骤方法:
- (1)根据错误提示信息及业务功能逻辑的推理等相关信息【与错误征兆有关的提示信息】找到有可能会导致错误发生的位置,异常错误日志信息定位错误发生位置
错误提示的相关信息:
“ERROR:'../work/app1/page10.sc'Lines 5:语法错误,被赋值变量没有声明。 : xx”
路径+界面编号 | 行号 | 问题原因 |
---|---|---|
ERROR:'../work/app1/page10.sc | lines 5 | 被赋值变量没有声明。 : xx |
- (2)程序代码中自己标记的错误信息,使用echo();语句输出信息到控制台
当程序模拟执行时,在控制台可以看到输出信息,根据输出的标记信息判断问题
将程序执行的参数、返回结果值在控制台进行输出,检查输出的结果值是否为程序执行咱们想要的结果,进而判断错误发生点
int js=0;
void work()
{
echo(" 步骤2: "+js);
}
void ontimer()
{
js++;
echo("步骤1: "+js);
if(js==2) work();
}
/*
输出结果
步骤1: 1
步骤1: 2
步骤2: 2
步骤1: 3
*/
常用的调试方法有如下几种
试探法
根据输出的结果,猜测问题的所在位置,利用在程序中输出语句,分析错误的线索,一步步地试探分析出错误所在。这种方法效率很低,适合于结构比较简单的程序。
回溯法
调试人员从发现错误症状的位置开始,人工沿着程序的控制流程往跟踪代码,直到找出错误根源为止。这种方法适合于小型程序,对于大规模程序于其需要回湖的路径太多而变得不可操作。
归纳法
归纳法就是从测试所暴露的问题出发,收集所有正确或不正确的数分析它们之间的关系,提出假象的错误原因,用这些数据来证明或反驳,从而确定错误所在。
演绎法
根据测试结果列出所有可能的错误原因。分析已有的数据,排除彼此矛盾的原因。对余下的原因,选择可能性最大的,利用已有的数据完该假设,使假设更具体。用假设来解释所有的原始测试结果,如果能解释这一结果,则假设得以证实,也就找出错误;否则,要么是假设不完备或不成立,要么有问题。
对分查找法
这种方法主要用来缩小错误的范围,如果已经知道程序中的变量若干位置的正确取值,可以在这些位置上给这些变量以正确值,观察程序运行输出结果。
如果没有发现问题,则说明从赋子变量一个正确值开始到输出结果的程序没有出错,问题可能在除此之外的程序中。
否则错误就在所考察的这个程序中,对含有错误的程序段再使用这种方法,把故障范围缩小