工作中发现的一个bug,可能全世界碰到这个bug的就我一个,别人就不要关注了,鉴于我花了大力气解决这个bug,还是记录一下个人心路历程,和辛酸史。
bug的发现过程,首先这个bug的奇特之处在于,只在装IE6的机器里面有,升级到IE7没有。其次在运行我的功能后,运行别人的功能有问题,在运行别人的功能后,再运行所有的功能都没有问题,(有人要说了,这好办,先运行别人的功能呗,靠,我也知道啊,关键是我的功能必须先于所有的功能)。
看我说发现的现象比较简单,其实光发现这些测试结果,我的两个同事加班了一个晚上。最后锁定是我的功能造成的。(我招谁惹谁了555)。没办法,改吧。
由于测试的结果有矛盾之处(我的功能 -> 别人的功能 不能show网页, 别人的功能-> 我的功能->别人的功能 一切正常)。没有办法下手,于是去比较我的代码和别人的代码有什么不同。同时,我的同事帮我测试加载到webBrowser里面的html内容是否有错误。同事的结论是html没有问题。好的,现在的方向就放到了webBrowser,和form本身的问题上去了。比较代码结果显示,有几处不同:
1,我的webBrowser是继承类。别人的不是。
2,我的form前面多了个属性[System.Runtime.InteropServices.ComVisibleAttribute(true)]
写了一个测试程序后,发现不是这个两个的问题。抓狂中。。。。。。。。。。。。。
此时已经在这上面工作了1天了。忽然灵感来了,想到了我们的功能都是放到ACAD中的,但我的加载方式和他们的不同,我用的是 Application.ShowModalDialog() function, 别人用的是Application.ShowModelessDialog() function, 继续写测试程序,重现bug,恨不得踹ACAD的RD几脚,呵呵,开个玩笑。
知道了原因就好办了,解决办法也有了,就是不是正规路子,我又弄了个webBrowser,边框去掉,颜色透明,里面内容赋值为空,先用Application.ShowModelessDialog() function调用它,弄个event等它结束了再调用我的Form。
这个世界清静了。