PowerBuilder高级调试技术与技巧
以上的条件满足之后,在组件脚本里面设置好断点。打开调试画板,在PainterBar工具栏按Start Remote Debugging按钮,而不是通常调试本地应用的Start按钮,然后填写连接Jaguar CTS组件服务器的信息,选中要调试的组件。这时候可等待客户端的程序调用该组件了。
对于断点的设置,最好先打开组件对象,在需要调试的地方设置上断点,再进入调试画板,这样所设置的断点已经存在了,而不必再在Source Browser里面去找。
4.2远程调试具体方法
运行一个客户端程序,这个程序在另一个PowerBuilder中运行、或者是一个别的机器上的可执行程序,但都必须访问所调试Jaguar CTS组件的方法和事件,这样才能触发刚才的远程调试,当客户端程序调用Jaguar CTS的组件,并且运行到断点处(陷入到组件里面),刚才调试组件的PowerBuilder会在Windows任务栏中闪烁,提示用户可进行组件的远程调试了,切换到远程调试窗口,就能看到脚本和断点,调试方法与本地脚本调试基本相同,这时候需要充分利用前面所讨论的调试技术。
打开菜单View>Instances,对于Instances View,建议在远程调试阶段始终打开,这样能方便的切换对不同实例的调试,在Instances View里能观察中间层组件实例的三个状态:running代表这个组件实例在运行;,idle代表实例是空闲的,它的存在只是等待客户对它的方法的陷入;stopped代表运行中止状态。三个状态中一般是看不到running状态的,因为当触发调试的时候,实例是停在断点处,看到的状态是stopped,当调用完方法(组件方法陷入完成后),实例状态转为idle,running 状态由于陷入代码运行时间非常快,你无法观察到,除非你设定了某种循环让组件方法运行时间延长才能观察到
如果有两个以上的客户端陷入到相同的组件中,会出现两个实例,它们对应相同的包和组件信息,但标号不同,由实例号1、2…标识出,而且它们的状态可能不同,有的是stopped,有的可能是idle。选择不同的instance,可以分别调试,尽管不同的实例可能对应相同的组件。
5 结束语 建议调试的时候把源码中的窗口置顶函数注释掉,如setposition(topmost!)之类的函数,否则会切换不到调试画板。
远程调试比本地调试复杂得多,比如对相同的组件可以陷入多个方法的调用中,每个客户端的调用所走的位置不同,这时候需要切换不同的实例。
远程调试选项在一个组件调试成熟之后需要禁止掉,否则,就有可能被客户端的调试机制所利用,源代码被别的用户调试和检查。
适用于本地调试的Object In Memory和Watch View里面的表达式计算不被现在的PowerBuilder远程调试技术支持。
参考文献
〔1〕David M. C. Client/Server: A Developer's Guide. Revised Edition. IDG (M&T) Books, 1998.
〔2〕David M. C. Power Builder 6: A Developer's Guide. Revised Edition, .IDG (M&T) Books, 1998.
〔3〕 李志军, 李飞, 肖永波等编著. 《Sybase组件事物服务器Jaguar技术详解》. 电子工业出版社, 2000.
〔4〕Sybase Com. Building a Jaguar Component,
〔5〕武高明. PowerBuilder开发Jaguar CTS组件的远程调试技术. 程序员大本营—数据库专刊. 2002
〔6〕林颖贤,林大滨. 多层分布式结构技术在企业物资管理信息系统中的应用. 软件世界. 2001
Tags:
作者:佚名评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论