第08章程序调试与创建可执行文件_第1页
第08章程序调试与创建可执行文件_第2页
第08章程序调试与创建可执行文件_第3页
第08章程序调试与创建可执行文件_第4页
第08章程序调试与创建可执行文件_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 PowerBuilder实用教程实用教程叶核亚叶核亚 王青云王青云第08章 程序调试与创建可执行文件 8.1 程序调试技术 8.2 创建并运行可执行文件 8.1 程序调试技术 8.1.1 发现错误 8.1.2 调试画板 8.1.3 调试过程 8.1.1 发现错误 当程序不能正常运行或者运行结果不正确时,表明程序中有错误。按错误的性质可将程序错误分成3类:语法错、语义错、逻辑错。 1. 语法错 2. 语义错 3. 逻辑错 1 语法错 违反语法规范的错误称为语法错(Syntax Error),这类错误通常在编译时发现,又称编译错。例如,标识符未声明,表达式中运算符与运算分量类型不兼容,变量赋值时

2、的类型与声明时的类型不匹配,if语句需要以if end结束等。 编译器一旦发现语法错就停止编译,并在脚本视图底部给出错误信息。 PowerBuilder在保存脚本的同时进行编译,所以,如果脚本中有语法错,则编译不通过,无法保存。 为避免产生语法错误,应严格按照语法定义编写脚本,注意书写细节,在书写属性和函数时,可以利用PowerBuilder的编辑提示功能,选择相应的属性和函数。 2 语义错 若程序在语法上正确,但在语义上存在错误,称为语义错(Semantic Error)。例如,输入数据的格式错,除数为0错,给变量或属性赋予超出其范围的值,试图打开一个不存在的文件,试图访问一个未打开的窗口等

3、。 此时程序能够通过编译,但在运行时会发生错误,所以这类错误又称运行错(Runtime Error)。系统发现运行错时,将停止程序运行,给出错误信息。 语义错的产生视程序运行情况而定,不由程序本身所控制,程序中不能预见错误的发生。如果不希望程序因某个运行错而完全停止,则可以在应用程序对象的SystemError事件中写处理错误的程序。当程序运行过程中产生运行错误时,系统将会触发应用程序对象中的SystemError事件,执行该事件脚本。 3 逻辑错 当程序通过编译,可运行,但运行结果却与期望值不符,这类错误称为逻辑错(Logic Error)。例如,由于死循环而没有结果,循环次数不对等因素导致

4、计算结果不正确等。 因为系统无法找到逻辑错,所以逻辑错最难调试。此时,程序员必须凭借自身的程序设计经验,并运用PowerBuilder的调试功能,才能找到错误原因及出错位置,从而改正错误。 8.1.2 调试画板 PowerBuilder集成开发环境提供了两种运行应用程序的方式:常规方式和调试方式。l 常规方式:应用程序响应用户的交互操作并且一直执行直至用户终止它或出现运行错误。这是用户完整运行应用程序的方式。l 调试方式:在脚本和函数中插入断点或进行脚本的单步执行,系统每遇到含有断点的行就停止执行,此时可以显示执行过程中变量的取值,以便找出脚本中的逻辑错误。 调试画板(Debug Painte

5、r)是在调试方式下运行应用程序的工具。 1. 打开调试画板 2. 视图 3. 工具栏 1. 打开调试画板 单击PowerBar上的【Debug】按钮,打开调试画板,调试画板由一个工具栏和若干视图组成,如下图所示。 调试画板的工具栏全局变量局部变量源代码视图选择脚本查看变量断点行共享变量实例变量打开调试画板查看系统栈查看断点内存中的对象2 视图 调试画板包含的视图见下表。 3 工具栏 打开调试画板后,主菜单增加了Debug菜单。Debug菜单下的菜单项与调试画板工具栏上的按钮一致。调试画板工具栏上按钮说明如下图所示。Start Remote启动远程调试Start运行至断点Continue继续运行

6、Stop Debugging停止调试Step Over单步执行Step In单步进入Run To Cursor执行至光标处Select Script选择脚本Add Watch添加查看变量QuickWatch查看表达式Step Out单步跳出Set Next Statement设置下一条语句Edit Stop编辑断点Remove Watch清除查看变量Close关闭画板8.1.3 调试过程1 选择需要调试的脚本 在开始调试之前,首先需要选择跟踪调试哪一段脚本。在对象浏览视图中,选择需要调试的脚本,选中脚本将显示在源代码视图中。2 设置/清除断点 在常规方式下的脚本视图中,或在调试画板的源代码视图

7、中,都可以设置断点。设置断点方法是,将光标停在脚本中的某行上,执行弹出式菜单Insert Breakpoint,之后在当前行之前有一个圆点,表示该行已被设置为运行时的断点。在断点行上执行弹出式菜单Clear Breakpoint,则可清除已设置的断点。8.1.3 调试过程(续)3 跟踪运行 一旦设置好断点,就能在调试方式下运行应用程序。应用程序将会正常运行直至遇到含有断点的行才挂起。4 查看变量值的变化情况 调试程序时,系统将脚本中声明的全局、局部等变量的中间结果分别显示在不同的视图上。用户还可根据需要,将变量添加到Watch窗口以查看变量的动态变化情况。 8.2 创建并运行可执行文件 应用程

8、序经过设计、开发、调试和试运行,排除了明显的与潜在的错误并达到预期功能后,要把应用程序编译成可执行文件,这样用户就能够在没有安装PowerBuilder环境的计算机上,像运行其他软件那样运行应用程序了。 在用户机器上运行PowerBuilder数据库应用程序,需要 将 用 户 机 器 设 置 为 数 据 库 的 客 户 端 , 并 且 要 有PowerBuilder虚拟机的支持,即还要携带系统的运行库文件 8.2.1 工程对象 8.2.2 在客户端部署应用程序 8.2.1 工程对象 在集成开发环境中,可以运行应用程序,但系统并没有生成可执行文件(.exe)。如果需要生成可执行文件,必须创建工程

9、对象,才能将调试通过的应用程序编译成可执行文件。 工程对象(project)是一种独立的PowerBuilder对象,用于将应用程序编译成一个可执行文件(.exe)和多个PowerBuilder动态库(.pbd)。8.2.1 工程对象(续) 1 创建工程对象 2 指定生成动态库 3 为动态库指定包含的附加资源 1.创建工程对象 执行File | New菜单,在New对话框的Project页上选择Application图标,则创建了一个工程对象。在工程画板中,需要为工程对象指定以下编译特性:l 指定生成的可执行文件名。l 指定哪些库需要生成动态库(PBD或DLL)。l 指定资源文件,资源文件中声

10、明应用程序中包含的附加资源,例如图像文件等。 2 指定生成动态库 应用程序中在对象之间建立联系有两种方式:静态引用和动态引用。 PowerBuilder只将所有静态引用的对象编译到可执行文件中,而没有将动态引用的对象编译到可执行文件中。所以运行时看不到动态引用的对象。 为了使可执行文件在运行时能够显示动态引用的对象,必须将库文件(.pbl)编译生成动态库(.pbd)。动态库中包含了应用程序中所有动态引用的对象,这些对象能被可执行文件调用。应用程序可以包含多个库文件,每一个库文件编译生成一个动态库文件。 在工程对象画板中,选中库文件右边的PBD复选框,则声明该库文件需要编译生成动态库,并指明了库

11、文件的路径。 3 为动态库指定包含的附加资源 对于动态引用的图像文件,它们属于应用程序使用的附加资源,没有包含在库文件中。因此,在生成的动态库中,也不会包含这些动态指定的图像。这时,需要制作一个文本格式的资源文件(.pbr),其中包含应用程序中所有动态引用的图像文件名。在工程对象画板的Resource File Name编辑框中指定资源文件的路径,则可执行文件中能够显示这些位图、图标或图像文件。 8.2.2 在客户端部署应用程序 PowerBuilder应用程序是运行在客户端的,用户使用的客户端机器通常不作为程序开发的基地,因而不需要安装PowerBuilder开发环境。或者说,PowerBuilder应用程序通常是运行在没有PowerBuilder环境的客户端的。这时,仅有应用程序的可执行文件和动态库是不够的,还必须要有PowerBuilder虚拟机的支持。 PowerBuilder为脱离开发环境运行应用程序准备了一组动态链接库,称为Deployment Kit。这些运行库文件一般在SybaseShared

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论