目前所作的项目遇到一个bug,花了一个星期调试和解决,找原因花的时间最长,而真正花在解决上的时间只有一天半。找原因的时间有2天也是浪费的,因此总结下。

如果一个程序部署在相同的环境下,原来可以运行,突然不行了,而且程序能运行一部分。那么出现bug的原因是什么呢?

一个是环境因素,包括程序移植引起的,软件升级引起的等等;

一个是程序本身的逻辑错误;

一个是人为操作。

(还有什么其他的原因,以后再补充。)

对于一个bug,结合上下文,程序员应能分析下大致原因。对于这个bug,相同的环境,排除了环境原因;相同的环境下以前都可用,突然不能用,排除程序本身逻辑错误;那么就是人为操作的原因了。这个程序是个简化的LoadBalance程序,组成结构比较复杂,大概有5个小程序,通过数据库的数据互相交互,由于停止了另一个小程序导致数据库的数据隐含着错误,以至于这个程序不能用。当然,最后写了详细的log就发现这个exception了,一看到这个exception就知道是什么问题了。主要是判断大致方向的时候花的时间多,说明思路不够清晰,debug的能力果然也是一项重要指标啊。另外就是详细的log信息,在关键时刻作用还是很大的,如果打印出所有exception,而不是只catch不处理,也可以早点发现这个问题。

实际的项目中会遇到各种各样的问题,在把已写好的程序部署到实际的server环境里时,就发现好几个程序不可用,一个是真实server用的是磁盘阵列,web程序部署到磁盘映射上就不能运行。最后用相同的远程用户和本地用户账号解决了这个问题,归根结底,是个用户认证的问题。

另一个原因是这是个机顶盒程序,在电脑上开发的时候无法模拟机顶盒的request机制,也没研究机顶盒发出的request机制具体是什么,直接用浏览器模拟请求,最后部署的时候也出现了问题。归根结底,还是对request和response的运行机制不了解。

 

posted on 2011-09-19 17:36  linpiner  阅读(881)  评论(0编辑  收藏  举报