程序调试 几乎每一个稍微复杂一点的程序都必须经过反复的调试、修改,才能最终完成。很显然,只有正确找出错误的地方才可以将其改正。出错以后怎样找出错误的地方就变得很重要了,下面就谈一些查错的方法。
调试工具 1.易语言内部侦错 输入程序代码时有明显的语法错误存在,易语言会提示错误原因,而且当使用Ctrl+Enter键编译当前行时,错误代码无法通过编译。当用户写完一段代码后,试运行程序,易语言会对所有可能执行到的语句进行初步编译,当编译时发现明显的格式或语法错误时,易语言会将光标自动移动到错误行,并提示错误原因,用户可以根据光标提示和错误原因很快改正错误。如图1所示。
虽然易语言提供的内部侦错功能十分强大,但也只能指出输入上的格式错误,如数据类型不匹配、指定的变量或组件未找到等。而对于那些程序员编程时,逻辑上的错误,易语言就无能为力了。这就需要其他调试方法和调试命令的配合使用,快速而准确的找到错误代码。 2.跟踪调试方法解释 易语言提供的跟踪调试方法,如图2所示。
各调试项目在易语言状态条中的解释如下: ①在程序现行运行位置单步执行一行程序,如果此程序行调用了子程序,则跟踪进入子程序。 ②在程序现行运行位置单步执行一行程序,如果此程序行调用了子程序,系统不会跟踪到该子程序中去。 ③在上级子程序调用现行子程序的语句后中断。 在被调用子程序中设置断点,断点行被跟踪后,跳出当前子程序,系统跟踪至上级程序调用当前子程序语句的下一行代码。注意:被调用子程序断点后的代码被执行。 ④运行易程序,在当前光标处程序行处中断。 ⑤设置或清除当前程序行处的断点。 ⑥清除掉程序中的所有断点。 ⑦跳到现行即将被执行语句的位置。 3.跟踪法 编写一个比较简单的程序,看看程序是如何调试的。例程“调试程序.e”代码如下:
该程序是输出300以内同时能被2,3,5整除的整数。 现在开始调试。调试有多种方法,先介绍一种不需要设置断点就可以调试程序的方法。 首先选中要被调试的程序代码行。然后选择“执行到光标处”子菜单项目。如图3 所示。
按“F5”键运行程序,当程序执行到被选中代码时,系统便将程序挂起,并用黄色箭头指示代码执行位置。
通常用“F8”键就可以实现把程序每一步执行的情况都反映出来的功能。此方法就是模拟计算机一步步执行程序的过程。 当前程序已经被运行,不断按“F8”就可以使程序一步一步执行,直到最后一行代码被执行完毕。 为了更直观的了解程序的运行过程,在跟踪程序的同时打开易语言的“查改变量”面板。选中“局部计次变量”如图4所示。
不断按“F8”的同时,“局部计次变量”的值也不断的改变。 下面介绍图4中标题为“写入”按钮的使用方法。 此按钮的作用是改写被选中变量的值,使被调试程序直接运行符合此变量被写入值的代码行处。 首先选中变量值,输入将被写入的值,按“写入”按钮。然后使程序设计界面获得焦点,再按“F8”键跟踪程序。 例程“调试程序1.e”,使用改写逻辑变量的值可以更直观的看到程序的运行效果。 例程“调试程序2.e”,按照前面的步骤,在“_启动窗口_创建完毕”事件子程序和“子程序1”中选中代码行进行跟踪,比较各个跟踪方法。 4.断点法 在前面已经学习了基本的程序调试方法。但也有一个缺点,就是在遇到循环次数比较多或者语句比较多的时候,用起来比较费时,下面用一种新的也是常用的调试方法:断点法。 所谓断点法,就是在程序执行到某一行的时候,调试器自动“中断”程序运行,并保留这时各变量的状态,方便检查、校对。还用“程序调试2.e”为例,具体操作如下: 选中被调试程序代码,按下“F9”键,这时发现,该行首部加入红点,这表明该行已经被设置成断点行,当每次运行到此行的时候,程序都会自动停下来供编程人员调试。如下所示:
请记住,计算机是执行到断点行之前的一行,断点行并没有执行,所以这时“逻辑变量2 = 真”这一句并没有执行,其值还是为假。如图5所示。
“调用表”面板显示当前被执行代码所在程序集。如图6所示。
断点除了有以上用处之外,还有另外一个重要用处:它方便大家判断某个语句有没有执行或者是不是在正确的时刻执行,因为有时程序由于人为的疏忽,可能在循环或者递归时出现无法预料的混乱,这时候通过断点法,就能够判断程序是不是依照预期的顺序执行。
|