吾爱分享资源网

 找回密码
 立即注册
查看: 249|回复: 8

[易语言] 易语言如何编程第八章编写程序的调试和错误如何处理

  [复制链接]

1197

主题

1291

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10861
发表于 2017-10-10 14:01:30 | 显示全部楼层 |阅读模式
                                                                    第八章编写程序的调试和错误如何处理
程序在编写完成后可能会存在这样那样的问题,或测试后发现了错误,这些都与要开发人员去寻找错误发生的地方并改正,即调试程序,在易语言的开发环境中提供了诸如单步跟踪,设置执行断点,监视变量值等调试手段,能够帮助开发人员快速定位错误,掌握这些调试手段是每个开发人员的基本要求。
8.1程序有哪些错误
古语云:人非圣贤孰能无过。编写程序中总是或多或少的错误发生。这些错误根据产生的原因可以分为三种:语法错误 逻辑错误 和异常错误。
针对不同的错误,易语言提供不同的解决方案,但首先要区分三种错误,我们以走路为例说明,一个人要到某地,,路线的选择和进行过程好比是我们设计好的程序,如果路线正确,天气理想,个人在努力就一定会到到目的地,这就说程序运行正常,但可能会出现这样的情况,比如第一,汽车没有油了。。这种不符合规则的做法在程序的一开始我们就已经知道错误了,就好比编译错误,第二,这人的路线错了,好比在岔道口走错了方向,结果走到了其他的地发,这好比逻辑错误,第三,遵守了规则,路线也正确 ,但是没想到某个路被洪水冲垮了,这就是运行错误。
1.语法编译错误
不正确的书写格式会造成编译错误,比如漏掉了某些标点符号,调用函数没有提供必要的参数,数据类型不匹配,这些错误大多都会在编译调试时候自动检测出来并显示错误信息。
2.逻辑错误
当应用程序为按照预期的方式执行时就会产生逻辑错误,从语法的角度来看,代码是正确有效地,运行过程也是顺利的,但是产生了不正确的结果,其原因就是应用程序逻辑出现了错误。
检测程序是否含有逻辑错误可以采用人工检查代码测试程序的方法,测试就是运行应用程序,将结果和预期的目标进行比较的一种动态检查手段,对含有逻辑错误的程序需要进行调试,易语言提供了强大使用方便的调试手段,能帮助我们了解程序运行的整个过程和每个时刻的状态,从而迅速定位错误
3.运行异常错误
应用程序运行期间,当一个语句执行操作时发生错误的事件,就会产生运行异常错误 ,比如用户意料之外的数组下标越界等,这些错误如果没有被代码捕获,会是程序突然异常终止而无法继续运行。
8.2如何调试程序
1.常用的调试手段

再优秀的程序员都不能保证写出来的程序十全十美没有任何错误,出现错误不可怕只要熟悉的使用调试工具,采用合理的调试手段,就能快速排除错误,常用的调试手段有。
▲ 设置运行断点
再猜想可能发生错误的过程中设置断点,然后执行程序,当程序执行到断点实在的语句时,程序会中断(运行暂停),这是可以观察一些重要的变量和属性的值,看是否符合逻辑。
▲ 单步跟踪
在程序处于中断模式下,可以控制程序语句一步一步的执行,从而找出错误所在的语句或过程
▲ 监视变量值
对关键变量进行实时监控,观察变量值是否发送预期的变化,这是最有效的调试手段,因为程序的主体人物就是对数据的加工,程序是否成功也就取决与保存数据的变量是否完成预期的运算
▲ 代码中添加调试语句
为了简化调试过程或程序不便于进行中断运行,可以在代码中加入调试语句,不影响程序正常的操作流程而处处关键的中间处理结果,例如可以使用 输出调试文本 语句在提示窗口中输出中间结果。
2.设置断点
下面已上一章 7-1.e 程序为例子。说明如何使用易语言的调试工具完成对程序的调试稍微修改下 7-1 的例子 我们直接对数组元素赋值.
QQ截图20171010133640.png
假设我们输入了 数字 0 但是程序却报告虾米都没找到。调试的思路就是:首先想到的是肯定在查找的子程序中出现了问题。于是将断点设置在子程序中,然后单步执行循环语句,观察每次从数组中取出来的元素是否正确,是否与提供的数值相同哦,直到查出问题,具体操作步骤如下。
可以在设计代码是设置断点,具体方法:首先将光标移动到要设置断点的代码行。然后按下 【F9】键,或者 点击 运行菜单 设置或清除断点
在执行上述操作就会清除断点。
设置了断点后,易语言将会在代码行左边的灰色空白区域显示个 红色圆圈。


QQ截图20171010133728.png
3.运行程序
设置断点只是为运行做准备,想要程序正好停在断点所在的代码行,必须让程序运行起来,并且要确保处理逻辑肯定能够进入断点所在的过程。如果程序在运行过程中执行不到断点所在的位置,那么该断点达不到中断程序的作用

按下启动按钮,开始执行程序,与普通程序运行没有什么区别。一旦运行到断点处 程序会自动中断并返回易语言代码区,光标停在断点语句,程序处于等待状态,这成为调试中断状态。
中断状态只需要再次点击 启动按钮就能继续运行。
4.单步跟踪
程序进入中断模式后,还有断点的行没有执行,如果观察断点以后行在运行时候发生了什么,就要使用单步跟踪运行来跟踪运行状态,跟踪过程中可以随时了解人和变量或表达式的值。
▲ 单步跟踪
每按下一次 【F8】 程序就会自动执行一行,然后等待,如果程序当前行调用了一个过程,会跳过过程,如果需要查看过程内部,则使用 Shift+F8 来单步跟踪进入,跟踪到过程的内部。例子中我们至于要不断的按下 F8 就可以跟踪检查没次循环体的执行情况
▲ 监视变量
中断时可以将光标停留在任意一个变量上,都会快速的显示该变量的当前值 如图

QQ截图20171010133852.png
为了更方便的了解变量的值和变量的变化情况,可以添加变量到监视窗口,以便同步查看,方法是 选择监视表窗口 在任意位置点击右键 在右键菜单中选择 添加 如图

QQ截图20171010133929.png
在弹出的 查看修改窗口中 在请输入欲计算的表达式\变量输入框中填写变量或者表达式,然后点 添加到系统监视表 按钮 这样要监视的变量就会出现在监视表中,并且随着程序的执行,监视窗口中的变量或表达式会同步更新。
▲使用变量表窗口
变量表窗口是专为变量设计,可以很方便的查看到当前的程序集变量 全局变量和局部变量值 数组个元素值。如图

QQ截图20171010134005.png
▲ 使用输出窗口
输出窗口是另外一种调试方法,在该窗口能计算任何有效的表达式并输出结果。当前活动窗口. 如图 使用 输出调试文本(数组[局部计次]) 即可在输出窗口中输入数组元素的数据

QQ截图20171010140011.png
5.修改并测试
通过调试后发现了问题,找到了错误后就可以修改并且在此运行测试,最简单的方法就是停止程序运行,然后修改代码。
修改完后再次测试时候 可以直接用鼠标选取刚刚发生错误的语句 然后点击 运行菜单 执行到光标处 或则 按下 Alt+F8 然后按下 F8 单步跟踪或则 F5 继续运行,这时候变量值可能和修改以前不同,我们可以通过变量表中选取想要修改的变量值 然后修改变量,放入我们关心的变量值然后再测试逻辑是否正确。

QQ截图20171010140102.png
本章小结
程序的错误分为三种 语法编译错误 逻辑错误 运行异常错误为了调试错误 易语言提供了方便的调试工具 如 设置断点 单步跟踪 执行到光标处变量表达式监视表等等。
在进行简单跟踪变量不影响程序运行的情况下 尽量使用 输出调试文本()这点尤其是新手 极为重要。
下章预告:单选框 选择框 的应用






上一篇:易语言如何编程第七章模块和子程序的应用
下一篇:易语言如何编程第九章选择框和单选框的应用

0

主题

21

帖子

57

积分

注册会员

Rank: 2

积分
57
发表于 2017-12-29 02:40:24 | 显示全部楼层
感谢分享!!

0

主题

190

帖子

402

积分

中级会员

Rank: 3Rank: 3

积分
402
发表于 2018-5-18 14:09:09 | 显示全部楼层
下来看看

0

主题

197

帖子

401

积分

中级会员

Rank: 3Rank: 3

积分
401
发表于 2018-5-21 21:45:50 | 显示全部楼层
不错不错,楼主您辛苦了。。。

0

主题

204

帖子

432

积分

中级会员

Rank: 3Rank: 3

积分
432
发表于 2018-5-31 13:45:06 | 显示全部楼层
过来看看的

0

主题

209

帖子

458

积分

中级会员

Rank: 3Rank: 3

积分
458
发表于 2018-6-6 23:29:04 | 显示全部楼层
学习了,谢谢分享、、、

0

主题

186

帖子

380

积分

中级会员

Rank: 3Rank: 3

积分
380
发表于 2018-6-17 19:41:42 | 显示全部楼层
太厉害,。。。

0

主题

198

帖子

403

积分

中级会员

Rank: 3Rank: 3

积分
403
发表于 2018-6-22 13:38:44 | 显示全部楼层
赶快走一波

0

主题

176

帖子

360

积分

中级会员

Rank: 3Rank: 3

积分
360
发表于 2018-6-27 18:15:46 | 显示全部楼层
感谢分享~~~~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|吾爱分享资源网 ( 苏ICP备17042175号 | 苏公网安备 32108102010177号 )

GMT+8, 2018-11-22 02:57 , Processed in 0.166674 second(s), 40 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表