PB中如何调试程序

摘要 介绍PowerBuilder编程工具的高级调试技术,包括临时断点和条件断点设置、变量值改变断点设置、Just-in-time调试、中间层Jaguar CTS组件的远程调试等关键技术
关键词 断点;本地调试;远程调试;Jaguar组件
1 引言
PowerBuilder是数据库前端
应用开发的主流编程工具,随着从Client/Server的两层开发模式到三层甚至多层开发模式的过渡,PowerBuilder不断增加新的功能以适应和推进这种转变。PowerBuilder 7的版本已经可以通过开发Jaguar中间层组件创建典型的分布式应用。这就给PowerBuilder的调试技术提出新的要求。
     调试技术在任何软件开发中都站有及其重要的位置。利用PowerBuilder开发也不例外。PowerBuilder工具集成了强大的调试画板,使得调试变得容易,但其中的一些高级的调试技巧和技术并不是很容易掌握,而掌握和使用这些调试的高级技巧和技术是开发高质量软件产品的重要保证,也是优秀的PowerBuilder开发者必须具备的能力。
     PowerBuilder提供的高级调试技术主要包括:设置临时和条件断点、设置变量值改变断点、Just-in-time调试、Jaguar组件远程调试术(Remote Debug)。前三种调试技巧适合于本地调试;最后一种是分布式应用中的调试技巧,可以在客户端对部署在应用服务端Jaguar CTS(Component Transaction Server组件事务服务器简称)的组件进行调试,包括调试陷入到事件或者
方法的脚本,观察和更改组件变量等。
远程调试技术以本地调试为基础,是PowerBuilder做分布式开发的关键性技术,尽管与本地调试类同,但却又有其独特和复杂的一面,是做好PowerBuilder中间层组件开发的重要技术。当然,熟悉本地调试的各种技术细节,才能更好得进行远程调试。
对于基本的调试技术(比如设置断点、单步执行、屏蔽和清楚断点、监视变量等)不再累述。
2 PowerBuilder7的调试画板简介
调试画板集成了PowerBuilder强大的调试功能,包括以下主要的部分:
1)Breakpoints View:展示所有要调试的对象、事件、代码行信息、通过它很容易定位到需要调试的代码或者进行断点使能和屏蔽等操作。
2)Callstacks View:展示调试的断点在程序中调用的层次,返回时会按照这个压栈顺序返回。提供了程序执行的宏观线索。
3)Instances:展示实例化的远程组件状态等信息。只适用于远程调试。
4)Objects In Memory:展示加载到内存的对象列表。通过它可以观察对象在内存里的占用情况(不适用于远程调试)。
5)Source View:展示代码。
6)Source Browser:展示应用中所有的对象列表。
7)Source History:展示在Source View中曾经出现过的代码列表。
8)Variables View::展示所有类型的变量。可以在调试画板中人为修改变量值,或者设置在某个变量的值发生改变时中断程序而触发调试。
9)Watch View:展示选择出来的变量值,进行表达式的运算等。
3      本地调试
3.1设置临时和条件断点
对于一般的断点,可在Source View中很容易得设置。如果断点处在循环体中,可能不期望每次循环都跳到调试画板,这时候需要设置临时和条件断点。断点在多少次循环后被触发,属于临时触发;断点在满足某种表达式条件后被触发,属于条件触发;在相同的断点位置可以同时存在临时和条件两种触发机制。
打开对应的断点编辑弹出窗口(在Breakpoint View和Source View中都能打开),在Occurrence栏目填入一个整数,代表每循环多少次才触发这个断点;在Condition栏目填入一个表达式,比如ll_i = 10,这样,在这个循环中,每次在变量ll_i = 10这个条件满足时才触发断点。
可同时设置临时和条件触发,这种情况下必须两者都满足才触发断点。
当然条件触发也可以用于不属于循环性质的代码段里面。
3.2设置变量值改变断点
如果调试特别关心某个变量,关心这个变量的值在哪里改变了(比如由false变成true,由0变成非0等),这时可以设置变量值改变触发断点。方法是在Variables中选择要调试的变量,右键弹出菜单,选择Break on Change,这样,每次这个变量的值发生改变,就会触发断点,能够方便观察哪些代码对这个变量进行了赋值操作,有利于对这个变量的变化轨迹进行跟踪。
3.3Just-in-time调试
当按正常模式而不是调试模式运行应用的时候,如果程序运行不正常,甚至报错,可能需要退出程序,重新打开调试画板,调试这个异常或者错误,比较麻烦;选择just-in-time模式,就能在遇到需要调试的时候,即时切换到调试模式。
选择菜单Windows>System Options…在弹出窗口中选中Just In Time Debugging。在按正常模式运行程序时,只要切换到PowerBuilder窗口,就提示是否中断和调试程序,选择调试,会进入调试模式;如果出现系统错误,调试画板会自动弹出,让开发者进行调试,而不必特意选择调试模式。
4 远程调试
4.1远程调试的条件和准备
讨论了本地调试的一些技术和技巧后,转入远程调试方面。在远程调试中可以充分利用以上技术技巧。
要进行远程调试首先要满足几个条件:被调试的组件是PowerBuilder部署的nvo(非可视化)类型,Remote Debug(远程调试)选项是打开的;前者说明这种调试只局限于PB组件开发范畴,而不是其他类型的Jaguar组件,后者的满足要进入部署组件的工程对象画板,打开属性窗口,在components页框里看Supports remote debugging选项是否打开,没有的话就打开它。
以上的条件满足之后,在组件脚本里面设置好断点。打开调试画板,在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

内容概要:本文围绕基于CNN-Transformer混合模型的锂电池SOH(State of Health,健康状态)预测估计展开研究,提出一种融合卷积神经网络(CNN)与Transformer架构的深度学习方法,用于精准建模电池容量衰退过程。该方法充分发挥CNN在局部特征提取方面的优势以及Transformer在捕捉长时间序列依赖关系上的强大能力,有效提升了锂电池健康状态预测的准确性与稳定性。研究内容涵盖数据预处理、模型结构设计、训练优化流程及预测结果可视化等关键环节,适用于电池退化趋势分析与剩余使用寿命(RUL)评估,具有较强的工程应用价值。; 适合人群:具备Python编程能力和深度学习理论基础的高校研究生、科研人员及从事新能源电池管理系统开发的工程技术人才,特别适合聚焦于锂电池寿命预测、故障诊断与健康管理等方向的研究者。; 使用场景及目标:①掌握CNN与Transformer在时间序列回归任务中的协同建模机制;②实现高精度锂电池SOH预测模型构建与训练;③服务于电动汽车续航管理、储能系统运维决策与电池老化特性分析;④支持学术论文复现、科研项目验证及工业级电池管理算法开发。; 阅读建议:此资源以代码实践为核心驱动,建议读者结合所提供的完整Python代码进行动手实现,深入理解模型各模块的设计逻辑与训练技巧,并可通过调整网络结构或引入新数据集进一步拓展至其他时序预测任务中。
我们把同一标的(昆仑万维,现价 43.20 元,2026-07-31 收盘)交给三套系统,各出一份独立分析: **C 报告(CoordClaw 基于管理学多智能体系统)**——投研级。它由五个角色构成:周婷整合撰写、李静出基本面、王芳出技术面、赵明出风险、陈默做 PM 终审。最终产物是一份 38 项分级风险清单(P0×4 / P1×12 / P2×12 / P3×6 / 尾部×4)、双源交叉验证的财务数据(EM/Sina 差异 <0.01%)、严格的口径纪律,以及一份原样保留的"待核实"清单。结论冷冰冰:高风险,不建议参与。 **D 报告(DeepSeek)**——信息整理级。它把"4+3 AGI 战略"、天工 AI、Opera 浏览器、StarMaker 拆得很漂亮,核心财务数据(营收 81.98 亿、归母 -15.93 亿)也没算错。但整篇没有技术面、没有量化风控,更关键的是——它完全没提实控人已减持 75%、质押状态未知、净现金仅 15.19 亿且续航只有 1.26~1.81 年这些要命的负面。这是典型的"选择性呈现"。 **K 报告(Kimi)**——以对比评估的方式呈现。它搭起"数据准确性 / 分析维度 / 结论合理性"的三维框架,把几份材料放在一起对照,给出各自的强弱判定。它的维度意识比 D 报告更自觉,但作为一份独立分析,它对"评估方法本身的信度"交待不足,部分引用的核对也不够彻底。 结果两家的结论高度一致。C 报告(多智能体)被评投研级、居首;D 报告(DeepSeek 自己写的)被评信息整理级、居中;K 报告(Kimi 自己那份)维度较全但核验深度有限,排在两者之间。DeepSeek 的那份评估把 C 给了五星、D 三星、K 四星;Kimi 的那份评估也独立地把最高分给了 C。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值