程序调试 ,并在代码编辑器底部的窗口中列出所发现 错误,供用户参考。
虽然编译
系统可以发现程序中的语法错误, 但不能准确定位错误发生的位置和原因。例如 ,【例9-1】第一个图中的程序代码有两个错误 ,一个是变量声明位置错误;另一个是变量z的 赋值语句语法错误,但在【例9-1】第二个图中 ,编译系统却给出了5条错误提示信息。 在这种情况下,应该从第一个错误位置开始 ,逐步解决。每修改一个语法错误后立刻重新 调试程序,确认修改是否正确。这样做的好处 有两个:一是快速减少语法错误的数量,很多 错误是连带产生的,当一个错误解决时,由此 衍生出的错误自动解决;二是编译系统可以更
精确地指出错误原因。例如,当解决了【例9-1 】中的第一个语法错误后,再次调试
程序的结 果如下图所示。此时,窗口中只显示一条语法 错误,并且给出的语法错误原因更加准确。
修改语法错误后的程序调试结果
9.2.2 逻辑错误调试 逻辑错误调试
与语法错误相比,逻辑错误更难于处理。 在调试逻辑错误时,不仅需要定位逻辑错误 发生的位置,还需要确定逻辑错误发生的原 因,从而进行修改。下面介绍如何使用Delphi 系统的调试逻辑错误。 1.逻辑错误定位 通常情况下,为了定位逻辑错误的位置, 需要控制程序的运行。在Delphi系统中,可以 通过单步执行方式和断点的方式来控制程序 的执行
。
1)单步执行方式 在单步执行方式下,可以逐条执行语句,然 后查看当前语句的执行结果,从而判断该语句 是否出现逻辑错误。下面将介绍几种重要的单 步执行方式。 (1)执行Run→Step Over命令或按F8键,程序 进入单步执行方式。每按一次F8键或执行一次 Run→Step Over命令,程序执行一条语句,执行 完后进入暂停状态,等待用户操作。当执行的 语句时过程或函数时,该过程或函数将作为一 条语句处理,不执行其内部的语句,直接给出 过程或函数的调用结果。
(2)执行Run→Trace Into命令或按F7键,程序 也会进入单步执行方式。不同的是如果当前语 句是函数体或者过程体,则其内部的语句也要 单步执行。 (3)终止执行。当需要终止程序调试时,执行 Run→Program Reset命令或按Ctrl+F2组合键。 2)断点方式 在使用单步执行方式调试程序时,每次都要 从程序的开始处执行,如果代码的行数较多, 使用单步执行方式调试程序的效率太低。这时 ,可以在程序中设置断点,使程序从断点处进 行单步调试,不用从程序的开始处执行。
(1)设置断点。在Delphi系统中执行Run→Add Breakpoint→Source Breakpoint命令,打开Add Source Breakpoint对话框,如下图所示。
Add Source Breakpoint对话框
在Filename下拉列表框中选择要调试的文件 ,在Line number下拉列表框中指定需要设置断 点的代码行,然后单击OK按钮,即可完成断点 的设置。 此外,还有一种更简单的设置断点方法:在 代码编辑器中选中需要设置断点的代码行,单 击该行左侧的分隔栏,可将该行设置为断点。 设置了断点的代码行左侧出现一个红点,如下 图所示,单击该红点可以取消该代码行的断点 设置。
为代码设置断点
(2)管理断点。通常情况下,在调试程序时需要 设置多个断点,这就需要对断点进行管理。执行 View→Debug Windows→Breakpoints命令或按 Ctrl+Alt+B组合键,打开断点列表,如下图所示。
为代码设置断点
在断点
列表中选中一个断点右击,在弹出的 快捷菜单中选择Delete命令,可以删除该断点。 但在很多情况下,只需要暂时取消某个断点, 方法为在断点列表中右击要暂时取消的断点, 在弹出快捷菜单中选择选择Enable命令,再次单 击该命令,可以恢复该断点。
通过上面介绍的方法设置的断点称为无条件 断点,程序运行到断点处时进入挂起状态,程 序暂停执行,系统