网络开发 调用API函数 报表打印 常用技术 经验汇总 控件使用 软件工程 数据处理
您的位置:首页 >> vfp教程 >> 网上文摘 >> 常用技术 >> 正文

VFP的调试技术
出处:网络

  VFP(Visual FoxPro)是许多数据库系统设计者钟爱的开发平台。其良好的对象可视性和事件驱动等特点给系统开发带来许多方便,符合新时代的应用设计要求。在程序员开发应用程序时,为了保证应用程序的正确性和合理性,需要对程序进行测试性运行,以发现其中的错误并逐一修改。本文根据开发周期分3部分介绍VFP应用程序的调试技术与方法。

  调试前的准备工作

  要想建立一个性能可靠的应用程序,最好的方法是在编程时保持良好的编程风格和习惯(如留出空白空间、添加代码注释、使用常规的命名规则等),及早发现潜在的错误,尽量避免这些错误的出现。此外,在早期的开发过程中,可以采取一些必要的步骤,这样可以使后面的测试和调试工作变得简单。这些步骤包括:
l.建立测试环境
为了保证程序的可移植性并建立适当的测试和调试环境,在建立系统环境时必须考虑以下几个方面的问题:
● 硬件和软件
有时应用程序需要在性能较低的工作平台上运行,所以为了保证程序的可移植性,应该根据情况按可能的最低平台开发程序:使用最低层次的视频方式开发应用程序;确定最低所需的内存和磁盘空间的大小;对于应用程序的网络版,还应考虑内存、文件和记录锁定等特殊要求。
● 系统路径和文件属性
为了在运行应用程序的每台机器上都能够快速访问所有必需的程序文件,在定义基本配置时,应该设置合理的文件存取属性,为每个用户设置合理的网络权限。
● 目录结构和文件位置
使用SET命令动态地设置相对路径,另建一个目录或目录结构,将源文件和生成的应用程序文件分开。这样,就可以对应用程序的相互引用关系进行测试,并且准确地知道在发布应用程序时应包含哪些文件。
2.设置验证信息
为了验证代码运行工作环境是否符合预先假设的情况,可以在程序代码中包含一些验证的内容。如使用ASSERT命令标明程序中的假设。当ASSERT命令中所规定的条件为“假”时,将显示一个提示信息对话框,并将信息在“调试输出”窗口中显示出来。
3.查看事件发生的序列
在VFP中可以使用可视化的工具或SET EVENTTRACKING命令来跟踪、查看事件的发生顺序。在系统菜单的“工具”下拉菜单中选择“调试器”选项可启动“VFP调试器”窗口。 若要跟踪事件,可在“工具”下拉菜单中选定“事件跟踪”,启动“事件跟踪”对话框。该对话框允许用户选择想要查看的事件。

调试应用程序
在应用程序运行和测试中发现问题时,可以使用VFP调试环境找到错误。
1.启动调试器
从“工具”下拉菜单中,选择“调试器” 打开调试器窗口,也可以使用下面的命令打开调试器:
DEBUG
SET STEP ON
SET ECHO ON
2.跟踪代码
观察每一行代码的运行,同时检查所有变量的属性和环境设置的值。
可以从“调试”菜单中,选择“单步”,或者单击“单步”工具栏按钮,单步执行程序。
以下一些技巧可以提高调试的效率和质量:
◎ 设置断点以缩小逐步调试代码的范围。
◎ 如果知道某行代码将产生错误,那么将光标放在该行的下一行,并从“调试”菜单中选择“设置下一条语句”,这样就可以跳过有错误的这行代码。
◎ 如果有许多和Timer事件相关联的代码,那么可以在“选项”对话框中的“调试”选项卡里,清除“显示计时器事件”,就可以避免跟踪这些代码。
3.中止程序的执行
在VFP中,可以按下Esc键将正在“跟踪”窗口中运行的程序停止。如果已经知道要在何处将执行的程序停止,那么可直接在该行设置一个断点。
如果正在调试对象,那么通过在对象列表中选择该对象,在过程列表中选择所需的方法或事件,就可以在“跟踪”窗口中找到特定的代码行。例如,调试表单对象时,在对象下拉列表中选定“bottomset1”对象,在过程列表中选定“Init”事件,则“跟踪”窗口中显示的便是这个对象的相应事件代码。
如果要了解何时一个变量或者属性的值发生了变化,或者想知道何时运行条件改变了,可以对一个表达式设置断点。
在断点对话框的“类型”列表中还可以设置“当表达式为真时中断”和“如果表达式为真则在定位处中断”等中断类型。有时在“跟踪”窗口找到某个代码行,设置一个断点,然后在“断点”对话框中编辑该断点会更容易一些。为此,可将断点设置的“类型”从“在定位处中断”改成“如果表达式值为真则在定位处中断”,然后添加该表达式。
4.查看存储值
● 在“局部”窗口中查看存储值
“局部”窗口会显示调用堆栈上任意程序、过程或方法程序里面所有的变量、数组、对象和对象元素的值。默认情况下,在“局部”窗口中所显示的是当前执行程序中的值。通过在“局部变量的位置”列表中选择程序或过程,也可以查看其他程序或过程的值。
● 在“监视”窗口中查看存储值
在“监视”窗口的“监视”框中,键入任意一个有效的VFP表达式,然后键入回车。这时,该表达式的值和类型就会出现在“监视”窗口的列表中。
● 在“跟踪”窗口中查看存储值
在“跟踪”窗口中,将光标定位到任意一个变量、数组或属性上,就可以在提示条中显示它的当前值。
● 显示输出结果
DEBUGOUT命令可将“调试输出”窗口中的值写入到一个文本文件日志中。此外,也可以使用 SET DEBUGOUT TO命令或“选项”对话框中的“调试”选项卡来设置保存调试结果的文件。

处理应用程序“运行时”错误

“运行时”错误是在应用程序开始执行后发生的。产生“运行时”错误的可能的操作包括:试图向不存在的文件中写入;试图打开已经打开的表;想要选择已经关闭的表;发生数据冲突;除数为零等等。为了防止和解决“运行时”错误,熟练掌握如表1所示的一些函数和命令会有所帮助。
表1 处理“运行时”错误的函数和命令表
函数或命令
AERROR()
DEBUG 或 SET STEP ON
ERROR
ERROR()
LINENO()
MESSAGE()
ON ERROR
ON()
PROGRAM() 或 SYS(16)
RETRY
SYS(2018) 功 能
使用错误信息填充数组
打开“调试器”窗口或“跟踪”窗口
产生指定的错误来测试错误处理
返回错误号
返回发生错误的行号
返回错误信息
当发生错误时执行的命令
返回一些命令,这些命令指明了错误处理命令
返回当前执行的程序名称
重新执行前一条命令
返回当前错误信息参数

1.处理过程中的错误
当过程中的代码发生错误时,VFP将检查与ON ERROR例程相关的错误处理代码。如果ON ERROR例程不存在,VFP就显示默认的错误信息。
2.处理类和对象中的错误
当方法程序代码中发生错误时,VFP将检查和该对象的ERROR事件相关的错误处理代码。如果在该对象的ERROR事件上没有处理代码,则将从父类或高于该类的其他类中执行ERROR事件的代码。如果在该类的层次结构中,找不到ERROR事件代码,VFP就检查一个ON ERROR例程。如果ON ERROR例程也不存在,则显示默认的错误信息。需要对没有处理过的错误提供出错信息,否则,尽管程序会执行错误事件代码,但不进行任何操作。
3.从错误处理代码中返回
在执行完错误处理代码后,程序继续执行引起该错误的代码行的下一行代码。在处理完错误后,如果想重新执行引起错误的那行代码,可使用RETRY命令。
当遇到的错误和代码行无关时,调用ERROR事件。但是当程序陷入这种错误时,没有一行代码可使用RETRY命令来重新执行。

[返回]

     

首页 | 设为首页 | 加入收藏 | 关于本站 | 友情链接 | 版权声明

     
 
Copyright© www.bianceng.cn Powered by 编程入门网 All Rights Reserved
吉ICP备06005558号