易语言吧

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 6650|回复: 1

[经验分享] 详解易语言程序调试的几种方法

[复制链接]

180

主题

245

帖子

4761

积分

网站编辑

Rank: 8Rank: 8

积分
4761
威望
0
易币
4516
贡献
0
积分
4761
UID
6725
在线时间
129 小时
注册时间
2020-6-13
发表于 2020-6-21 10:57:43 | 显示全部楼层 |阅读模式
程序调试
几乎每一个稍微复杂一点的程序都必须经过反复的调试、修改,才能最终完成。很显然,只有正确找出错误的地方才可以将其改正。出错以后怎样找出错误的地方就变得很重要了,下面就谈一些查错的方法。


调试工具
1.易语言内部侦错
输入程序代码时有明显的语法错误存在,易语言会提示错误原因,而且当使用Ctrl+Enter键编译当前行时,错误代码无法通过编译。当用户写完一段代码后,试运行程序,易语言会对所有可能执行到的语句进行初步编译,当编译时发现明显的格式或语法错误时,易语言会将光标自动移动到错误行,并提示错误原因,用户可以根据光标提示和错误原因很快改正错误。如图1所示。


截图202006211052322756..png


虽然易语言提供的内部侦错功能十分强大,但也只能指出输入上的格式错误,如数据类型不匹配、指定的变量或组件未找到等。而对于那些程序员编程时,逻辑上的错误,易语言就无能为力了。这就需要其他调试方法和调试命令的配合使用,快速而准确的找到错误代码。
2.跟踪调试方法解释
易语言提供的跟踪调试方法,如图2所示。
截图202006211053029740..png


各调试项目在易语言状态条中的解释如下:
在程序现行运行位置单步执行一行程序,如果此程序行调用了子程序,则跟踪进入子程序。
在程序现行运行位置单步执行一行程序,如果此程序行调用了子程序,系统不会跟踪到该子程序中去。
在上级子程序调用现行子程序的语句后中断。
在被调用子程序中设置断点,断点行被跟踪后,跳出当前子程序,系统跟踪至上级程序调用当前子程序语句的下一行代码。注意:被调用子程序断点后的代码被执行。
运行易程序,在当前光标处程序行处中断。
设置或清除当前程序行处的断点。
清除掉程序中的所有断点。
跳到现行即将被执行语句的位置。
3.跟踪法
编写一个比较简单的程序,看看程序是如何调试的。例程“调试程序.e”代码如下:
截图202006211053374527..png


该程序是输出300以内同时能被235整除的整数。 现在开始调试。调试有多种方法,先介绍一种不需要设置断点就可以调试程序的方法。
首先选中要被调试的程序代码行。然后选择“执行到光标处”子菜单项目。如图3  所示。

截图202006211054003594..png

F5”键运行程序,当程序执行到被选中代码时,系统便将程序挂起,并用黄色箭头指示代码执行位置。
截图202006211054543603..png


通常用F8”键就可以实现把程序每一步执行的情况都反映出来的功能。此方法就是模拟计算机一步步执行程序的过程。
当前程序已经被运行,不断按F8”就可以使程序一步一步执行,直到最后一行代码被执行完毕。
为了更直观的了解程序的运行过程,在跟踪程序的同时打开易语言的“查改变量”面板。选中“局部计次变量”如图4所示。
截图202006211056094027..png
不断按F8”的同时,“局部计次变量”的值也不断的改变。
下面介绍图4中标题为“写入”按钮的使用方法。
此按钮的作用是改写被选中变量的值,使被调试程序直接运行符合此变量被写入值的代码行处。
首先选中变量值,输入将被写入的值,按“写入”按钮。然后使程序设计界面获得焦点,再按“F8”键跟踪程序。
例程“调试程序1.e”,使用改写逻辑变量的值可以更直观的看到程序的运行效果。
例程“调试程序2.e”,按照前面的步骤,在“_启动窗口_创建完毕”事件子程序和“子程序1”中选中代码行进行跟踪,比较各个跟踪方法。
4.断点法
在前面已经学习了基本的程序调试方法。但也有一个缺点,就是在遇到循环次数比较多或者语句比较多的时候,用起来比较费时,下面用一种新的也是常用的调试方法:断点法。
所谓断点法,就是在程序执行到某一行的时候,调试器自动“中断”程序运行,并保留这时各变量的状态,方便检查、校对。还用“程序调试2.e”为例,具体操作如下:
选中被调试程序代码,按下F9”键,这时发现,该行首部加入红点,这表明该行已经被设置成断点行,当每次运行到此行的时候,程序都会自动停下来供编程人员调试。如下所示:
截图202006211056339186..png


请记住,计算机是执行到断点行之前的一行,断点行并没有执行,所以这时“逻辑变量2 = 真”这一句并没有执行,其值还是为假。如图5所示。
截图202006211056557995..png


“调用表”面板显示当前被执行代码所在程序集。如图6所示。
截图202006211057143814..png

断点除了有以上用处之外,还有另外一个重要用处:它方便大家判断某个语句有没有执行或者是不是在正确的时刻执行,因为有时程序由于人为的疏忽,可能在循环或者递归时出现无法预料的混乱,这时候通过断点法,就能够判断程序是不是依照预期的顺序执行。




0

主题

2368

帖子

9586

积分

VIP超级贵宾

Rank: 8Rank: 8

积分
9586
威望
198
易币
6819
贡献
0
积分
9586
UID
11903
在线时间
36 小时
注册时间
2021-1-23
发表于 2021-5-29 02:44:04 | 显示全部楼层
楼主发贴辛苦了,谢谢楼主分享!我觉得易语言吧是注册对了!
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【选择右侧内容,快速回复】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

大漠插件注册码无须等1-3号

QQ|一:站内所有资源均来自互联网收集或用户上传分享,本站不拥有此类资源的版权。 作为网络服务提供者,对转载行为的发生不具备充分的监控能力。但是当版权拥有者提出侵权并出示充分的版权证明材料时,易语言吧负有移除转载作品以及停止继续传播的义务。在满足前款条件下采取移除等相应措施后不为此向原发布人承担违约责任,包括不承担因侵权不成立而给原发布人带来损害的赔偿责任。 用户免费分享产生,如果侵犯了你的权益,联系QQ:3066137757|Archiver|手机版|小黑屋|易语言吧

GMT+8, 2024-5-9 04:22 , Processed in 0.220849 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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