资源预览内容
第1页 / 共21页
第2页 / 共21页
第3页 / 共21页
第4页 / 共21页
第5页 / 共21页
第6页 / 共21页
第7页 / 共21页
第8页 / 共21页
第9页 / 共21页
第10页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
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 语法错 违反语法规范的错误称为语法错(SyntaxError),这类错误通常在编译时发现,又称编译错。例如,标识符未声明,表达式中运算符与运算分量类型不兼容,变量赋值时的类型与声明时的类型不匹配,if语句需要以ifend结束等。 编译器一旦发现语法错就停止编译,并在脚本视图底部给出错误信息。 PowerBuilder在保存脚本的同时进行编译,所以,如果脚本中有语法错,则编译不通过,无法保存。 为避免产生语法错误,应严格按照语法定义编写脚本,注意书写细节,在书写属性和函数时,可以利用PowerBuilder的编辑提示功能,选择相应的属性和函数。 2 语义错 若程序在语法上正确,但在语义上存在错误,称为语义错(SemanticError)。例如,输入数据的格式错,除数为0错,给变量或属性赋予超出其范围的值,试图打开一个不存在的文件,试图访问一个未打开的窗口等。 此时程序能够通过编译,但在运行时会发生错误,所以这类错误又称运行错(RuntimeError)。系统发现运行错时,将停止程序运行,给出错误信息。 语义错的产生视程序运行情况而定,不由程序本身所控制,程序中不能预见错误的发生。如果不希望程序因某个运行错而完全停止,则可以在应用程序对象的SystemError事件中写处理错误的程序。当程序运行过程中产生运行错误时,系统将会触发应用程序对象中的SystemError事件,执行该事件脚本。 3 逻辑错 当程序通过编译,可运行,但运行结果却与期望值不符,这类错误称为逻辑错(LogicError)。例如,由于死循环而没有结果,循环次数不对等因素导致计算结果不正确等。 因为系统无法找到逻辑错,所以逻辑错最难调试。此时,程序员必须凭借自身的程序设计经验,并运用PowerBuilder的调试功能,才能找到错误原因及出错位置,从而改正错误。 8.1.2 调试画板 PowerBuilder集成开发环境提供了两种运行应用程序的方式:常规方式和调试方式。l常规方式:应用程序响应用户的交互操作并且一直执行直至用户终止它或出现运行错误。这是用户完整运行应用程序的方式。l调试方式:在脚本和函数中插入断点或进行脚本的单步执行,系统每遇到含有断点的行就停止执行,此时可以显示执行过程中变量的取值,以便找出脚本中的逻辑错误。 调试画板(DebugPainter)是在调试方式下运行应用程序的工具。 1. 打开调试画板 2. 视图 3. 工具栏 1. 打开调试画板 单击PowerBar上的【Debug】按钮,打开调试画板,调试画板由一个工具栏和若干视图组成,如下图所示。 2 视图 调试画板包含的视图见下表。3 工具栏 打开调试画板后,主菜单增加了Debug菜单。Debug菜单下的菜单项与调试画板工具栏上的按钮一致。调试画板工具栏上按钮说明如下图所示。8.1.3 调试过程1 选择需要调试的脚本 在开始调试之前,首先需要选择跟踪调试哪一段脚本。在对象浏览视图中,选择需要调试的脚本,选中脚本将显示在源代码视图中。2 设置/清除断点 在常规方式下的脚本视图中,或在调试画板的源代码视图中,都可以设置断点。设置断点方法是,将光标停在脚本中的某行上,执行弹出式菜单InsertBreakpoint,之后在当前行之前有一个圆点,表示该行已被设置为运行时的断点。在断点行上执行弹出式菜单ClearBreakpoint,则可清除已设置的断点。8.1.3 调试过程(续)3 跟踪运行 一旦设置好断点,就能在调试方式下运行应用程序。应用程序将会正常运行直至遇到含有断点的行才挂起。4 查看变量值的变化情况 调试程序时,系统将脚本中声明的全局、局部等变量的中间结果分别显示在不同的视图上。用户还可根据需要,将变量添加到Watch窗口以查看变量的动态变化情况。 8.2 创建并运行可执行文件 应用程序经过设计、开发、调试和试运行,排除了明显的与潜在的错误并达到预期功能后,要把应用程序编译成可执行文件,这样用户就能够在没有安装PowerBuilder环境的计算机上,像运行其他软件那样运行应用程序了。 在用户机器上运行PowerBuilder数据库应用程序,需要 将 用 户 机 器 设 置 为 数 据 库 的 客 户 端 , 并 且 要 有PowerBuilder虚拟机的支持,即还要携带系统的运行库文件 8.2.1 工程对象 8.2.2 在客户端部署应用程序 8.2.1 工程对象 在集成开发环境中,可以运行应用程序,但系统并没有生成可执行文件(.exe)。如果需要生成可执行文件,必须创建工程对象,才能将调试通过的应用程序编译成可执行文件。工程对象(project)是一种独立的PowerBuilder对象,用于将应用程序编译成一个可执行文件(.exe)和多个PowerBuilder动态库(.pbd)。8.2.1 工程对象(续) 1 创建工程对象 2 指定生成动态库 3 为动态库指定包含的附加资源1.创建工程对象 执行File|New菜单,在New对话框的Project页上选择Application图标,则创建了一个工程对象。在工程画板中,需要为工程对象指定以下编译特性:l指定生成的可执行文件名。l指定哪些库需要生成动态库(PBD或DLL)。l指定资源文件,资源文件中声明应用程序中包含的附加资源,例如图像文件等。2 指定生成动态库 应用程序中在对象之间建立联系有两种方式:静态引用和动态引用。 PowerBuilder只将所有静态引用的对象编译到可执行文件中,而没有将动态引用的对象编译到可执行文件中。所以运行时看不到动态引用的对象。 为了使可执行文件在运行时能够显示动态引用的对象,必须将库文件(.pbl)编译生成动态库(.pbd)。动态库中包含了应用程序中所有动态引用的对象,这些对象能被可执行文件调用。应用程序可以包含多个库文件,每一个库文件编译生成一个动态库文件。在工程对象画板中,选中库文件右边的PBD复选框,则声明该库文件需要编译生成动态库,并指明了库文件的路径。 3 为动态库指定包含的附加资源 对于动态引用的图像文件,它们属于应用程序使用的附加资源,没有包含在库文件中。因此,在生成的动态库中,也不会包含这些动态指定的图像。这时,需要制作一个文本格式的资源文件(.pbr),其中包含应用程序中所有动态引用的图像文件名。在工程对象画板的ResourceFileName编辑框中指定资源文件的路径,则可执行文件中能够显示这些位图、图标或图像文件。 8.2.2 在客户端部署应用程序 PowerBuilder应用程序是运行在客户端的,用户使用的客户端机器通常不作为程序开发的基地,因而不需要安装PowerBuilder开发环境。或者说,PowerBuilder应用程序通常是运行在没有PowerBuilder环境的客户端的。这时,仅有应用程序的可执行文件和动态库是不够的,还必须要有PowerBuilder虚拟机的支持。PowerBuilder为脱离开发环境运行应用程序准备了一组动态链接库,称为DeploymentKit。这些运行库文件一般在SybaseSharedPowerBuilder目录下,并不是所有运行库文件都是必需的,可以根据应用程序的需要选择所需的运行库文件。 8.2.2 在客户端部署应用程序(续1)如果运行与数据库无关的PowerBuilder应用程序的可执行文件,需要以下3个运行库文件:pbvm90.dll PowerBuilder虚拟机,必需libjcc.dll 必需libjsybheap.dll 必需
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号