程序出现问题时的调试方法

计算机的错误分为两种:语法错误和逻辑错误
语法错误

比如alter拼写错误,写成了alter。


 
运行结果只显示7,后面的结果没有显示,说明后面的代码没有执行。因为输出7后遇到了语法错误,程序终止执行。
上例也进一步的说明了解释性语言的特点:翻译一条执行一条,遇到错误提前终止执行。
var b = a + 3;
alert(b)

运行结果:不显示。通过开发者工具可以看到下图:


 
错误:引用未定义的变量。
语法错误的两种发现方法:
(1) 开发者工具的console窗口,能显示错误和说明
(2) Try...catch捕获异常
逻辑错误
 在语法上是没有错误的,但是实际结果和预期结果有出入。
var age = Number(prompt("请问你的年龄是?"))
if(17 <= age <= 24){
    alert("欢迎你报名参军!")
}else{
    alert("抱歉,你不能参军!")
}
98或者3时,都能参加参军,结果很显然是错误的,但执行过程中没有出现任何的语法错误。
调试的基本原理:程序的执行是自动的,而且速度非常快,无法了解其中的执行过程。
但是几乎所有的开发者工具都提供了调试的工能,可以控制程序的执行节奏,从而让开发者看清执行的过程。
怎么去执行节奏那;
(1) 设置断点

打开开发者工具,在source页中打开源代码,在代码左侧(行号边)单机即可在该处设置断点。


 
(2) 单步执行(step):每执行一步都会停下来,然后再进行下一步。

快捷键是F10;


 
控制节奏的目的是为了看清或者了解程序的执行过程,而不仅仅是结果。
怎么看结果那:
(1)、查看程序执行的轨迹,也就是上图中指示即将要执行的代码指示器,如果轨迹和预期的不一致,说明上一步的执行代码出错了逻辑错误。
(2)查看变量、表达式的值

  A.在watch窗口添加要查看的表达式。


 

此时就可以看到添加的表达式。


 
选中后右击后单机“Add  to watch”

在watch窗口中就可以看到添加的变量或者表达式


 
因为计算机程序的每一步执行的结果都是唯一的、可预期的,同时我们又可以通过上述手段来控制程序的运行节奏并查看程序执行的状态(如轨迹、变量表达式的值),也就是可以看到实际的结果。那么将实际的结果和预期对比,如果出现不一致,说明刚刚那一步有错误,即定位错误。
一旦定位出现的错误,根据所学的知识和经验,应该很容易分析出错误原因,从而找到解决方案。
var a = prompt("请输入第一边长");
var b = prompt("请输入第二边长");
var c = prompt("请输入第三边长");
var p = (a + b + c) / 2;//计算周长的一半
var s = Math.sqrt(p * (p - a) * (p - b) * (p - c));//海伦公式计算面积
alert(s);


 

查看a\b\c\p的值


 
A+b+c并不是我们预期的6,而是做了字符串拼接运算,而不是我们希望的加法,所以是类型问题。
解决方案就是强制转化成Number类型。

重新调试并查看结果:


  
调试工具不仅仅是定位错误的工具,也是一个非常重要的学习工具。
因为调试工具可以让我们直观的看到程序的运行轨迹及运行状态,有助于我们对于一些抽象知识的理解
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值