2008年5月24日星期六

最诡异的程序异常

算了算, 来昆明一共也才三天而已
可是总是觉得已经来了很久了, 想回去的欲望也越来越强烈
好在今天终于解决了问题, 也订了明晚回北京的机票

来昆明后, 用了一天就实现了用户提出的需求
剩下的时间却一直纠缠于一个十分诡异的问题
我们的客户端软件要在IE浏览器上安装一个插件(BHO插件)
但是在安装以后, 却导致用户使用了多年的一个用于打印的OCX控件出现异常
而且异常发生的条件一直不清楚
直到今天下午, 我找开发人员要到了打印模块的代码和那个OCX控件的安装文件
又在我的电脑上反复调试了两个小时, 才把错误重现出来
并且找到了其中的规律

规律十分复杂, 总结出来是以下几点:
1. 如果不安装我们的BHO插件, 则绝对不会出错
2. 安装了BHO插件后, 直接进行打印, 也不会出错
3. 安装了BHO插件后, 启动两个IE窗口, 并在第二个窗口中调用打印OCX控件进行打印, 也不会出错
4. 关掉第二个窗口, 再次打开这个窗口, 进行打印, 然后异常, 并且再也无法正常打印

说实话, 从来没碰到过这么曲折的异常重现方式
不过摸清了规律, 问题就解决了一半了
先是尝试在打开的页面中寻找那个OCX控件, 一旦找到则将BHO插件注销
但是没有解决问题, 估计在加载中就已经出错了
然后又尝试在加载页面之前就去判断加载的是否打印页面
如是的话, 就注销BHO插件
问题解决!

没有评论:

发表评论