Happy3w

解Bug的一些小技巧

2016.12.27
开发环境:eclipse 业务环境:NC5X、NC6X 适用对象:Java开发、NC开发 假如解bug的代码不是你开发的(你不是原作者),有没有好办法能快速解决呢。比如,突然负责NC平台的问题,来自各个业务开发部的问题都可能转到这,你既对业务不熟,也对平台不熟。平台一个类几千行的代码随处可见,业务节点数不清(真不知道NC一个版本有多少节点),流程九转十八弯。几天内要把bug解了,怎么办? 开发心得: 1、看系统日志,打断点。 如果所开发的系统有日志体系(一般大一点的系统都应该有),比如NC的NMC或者叫SPR,在右下角有个日志打开可以记录当前操作的代码执行基本路径。或者让提问题的人,提供当时的日志(客户端日志、服务器日志)。通过日志能快速定位问题的大概范围,确定在什么地方开始打断点跟踪。 2、无日志,看java底层,打断点 对于客户端的交互操作,在不涉及调用后台服务时,很多时候系统都不记录日志。那么,可以直接根据界面显示的控件,打断点到底层控件上,比如NC用的Swing控件,界面表体排序等,可以直接断点到Swing控件事件上。 3、输出监控数据,减少调试步骤 确定了基本断点位置后,很多时候离解决问题还很远。由于界面复杂、流程复杂,要找到问题发生的原因往往要涉及很多类、很多方法,一步步跟踪耗时、费力。因此,我采用的方法就是记录数据、输出数据,对所有可疑点进行检测、输出数据。一次执行完再查看和分析数据,找出变化和可疑点,然后缩小范围-〉加入检测——〉再执行-〉在分析,如此反复直到确定最终问题点。经多次实践,此法相较而言不仅轻松,而且比较容易解决疑难杂症,尤其数据量很大时此法优势更明显,比如调试NC问题时各种模板信息纠缠很多干扰数据看都没法看,用此方法可以过滤掉只输出有效信息。当然,监控数据输出要写一些方法(磨刀),乐3有时候也懒得写,想偷懒直接一步步跟吧,结果是耗费半天,问题依然没解决,最后还得用此方法解决。