Michael's

focus on architecture & hi-performance

最郁闷的bug!!! 千万别自己绑定默认事件!!!

我敢保证,这个bug是我写代码以来碰到过最最郁闷的了

过程是这样的,上周21号我们项目代码都还可以正常跑起来,一点bug都没有,这周来上班之后,偶也就把其中一个form上的按钮删了一个(刚才测试才知道是这个原因引起的 ),结果第二次编译之后,与我们的下位机系统连接就一直报错!!当时为了赶其他代码,也就暂时没把它纳入日常计划
到昨天,偶一个同事去现场之后,回来告诉偶说偶写的那部分功能又犯病了,当时就找了一个N天之前的版本暂时用着了,但偶心里就开始不好受了,因为偶写的这部分功能(也就是之前几个post里提到的通讯部分)在整个项目中占很大比重,如果出bug的话,整个业务都要挂起了.

没办法,查bug吧,先从vss入手先,因为上周的版本还是可用的,于是就把这周的版本和vss里上周的版本进行对照,真是吃亏又不讨好的事对比了老半天,涉及到发送接收数据的代码部分一个字母没动,总之是查了昨天整整半天没查出bug是什么,只是查出来其中有个命令字符总是不定时的重复发送一次,并且是参杂在数据字符中发出去的,当然下位机那端就要报错了.

查了这么久查不出bug所在,偶当时就有个很冲动的想法,把上周的代码整个恢复过来吧阿门!
幸好偶还没那么冲动,要不然偶同事肯定要崩溃了.

没办法了,还是从最原始的方法考虑解决之道吧: 单步跟踪!结果发现开始发送数据之前有个方法正常情况下只能调用一次,但是现在的情况是会随机多次调用!!难道问题就出在这里???那么,"Find All References"先?(偶用vs2005e文版),问题终于被我发现: 这周版本里该方法被2次引用,而上周版本里该方法只被1次引用!!
OK,找到引用的源头!!
为什么呢?
经过分析代码,原来其中有个按钮事件被之前的某个同事绑定了一次,而vs生成的Designer代码中又绑定了一次(上周这个绑定是没有的),而这周过来公司之后把该form上某个按钮删掉之后,Designer代码又重新生成了一次,结果那个按钮事件就暗地里又绑了一次因此导致方法被第二次调用
OK,把其中一个事件绑定删掉之后,编译,通过!!

神啊,不要再自己绑定默认事件了啊!!阿门!!!

posted on 2006-04-27 16:01 m.s 阅读(605) 评论(3) 编辑 收藏

导航

统计信息

News