EAS调试技巧分享
在调试跟踪EAS问题的过程中,经常会遇到一些问题不知道从何跟起,这里分享一下常见问题的调试方法,如有问题欢迎大家指正【emoji】。
问题一:知道后台执行的地方,但是想定位前台哪里发送的rpc请求
调试方法:
断点后台代码
后台线程暂挂时,找到客户端的AWT-EventQueue-2线程
点击suspend(暂挂),即可查看客户端调用发起的地方
问题二:前台有弹窗提示,需要定位是哪里给出的提示
调试方法:
GUI弹窗类为com.kingdee.eas.util.client.MsgBox,
代码中基本都是调用此类中的方法给出弹框提示
例如:showInfo(), showWarning()…
如不知弹框的具体类型,
可直接在com.kingdee.bos.ctrl.swing.KDDialog.show()方法断点 ,即可根据堆栈跟踪到弹框的代码位置。
问题三:控件值发生改变,想要定位到是哪个地方改变了控件值
调试方法:
直接在控件的设值方法中打条件断点跟踪。
以F7为例: 可直接在 com.kingdee.bos.ctrl.extendcontrols.KDBizPromptBox.setData(Object, boolean, boolean) 方法打断点。因为所有F7设值都会进入此方法,我们需要设置断点条件跟踪具体某个F7在哪里设置。
可以通过通过快捷键alt+shift+d调出客户端调试界面,获得控件的名称,通过名称设置过滤条件
例如:”bizPromptSupplier”. equals(this.getName())。即可只跟踪bizPromptSupplier这个F7的设值。其他控件如文本,下拉框,日期控件等都可使用类似的方法跟踪值变的调用。
特殊说一下表格控件,表格设值的方法为:com.kingdee.bos.ctrl.kdf.table.KDTable.XCell.setValue(Object),可以使用用行和列的索引值作为断点条件跟踪指定行列的值变, 例如:3==index.getColIndex()&&2==index.getRowIndex(),跟踪第4列,第3行的值改变(行列的索引值从0开始)。
问题四:通过RPC日志发现一条耗时的sql,想定位到执行sql的代码位置
调试方法:
通过ctrl+alt+]录制工具,录制后找到此sql
对应在com.kingdee.bos.sql.shell.KDStatement.execute(String) com.kingdee.bos.sql.shell.KDPreparedStatement.executeBatch() 等方法中断点,通过ksql等内部变量过滤sql内容,例如: ksql.contains("Fqty")。
EAS调试技巧分享
本文2024-09-16 22:19:25发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-47407.html