吐槽:解决一个奇葩问题--奇葩问题的苦谁碰到谁知道
2013-07-04 11:43
330 查看
项目已经七七八八,自测、测试一切正常,有测试报告为证。苦的是让老大拿出去演讲宣传,偶不其然的就会出现一个奇葩问题,界面触控不了(触控程序)而鼠标可以照常点。我们是触控程序啊,出这问题猛点半天也不得劲,客户犯嘀咕,你这到底是硬件还是软件有问题?硬件软件还都是我们公司的,我这不是拆老大的台嘛。还好老大是技术出身,体谅我们码农的苦
,也没找我秋后算账,搞得我一直过意不去,又解决不了。艹、艹、艹。
今天我是撸起袖管,装上虚拟机,把硬件connect进虚拟机,软件硬件就位,今天TMD非要搞点名堂出来。首先确认了这必须是软件问题,不是驱动软件问题。我们软件是C++窗口里面嵌着C#的窗口,问题症结必然在这! 可鄙视的是平日里都好好的,非要偶不其然的发作一下。
实在话,之前出现很多次了,众目睽睽之下且我在场的情况都出现3次了,一直抱有侥幸,以为信春哥+心中默念“不出现、不出现、...”就可以的。可它每次还是很给脸的出现了。主观感觉如果一直在操作,此问题不出现,如果老大或者演讲的人把软硬件丢那商量别的事情,过一会回来,就有可能出现了--这是重要线索。
那么为什么丢一会就会出问题呢,丢一会根本等于0操作,它就出现了?感觉这和屏保有千丝万缕的关系(偷看结局之后发现这条推论完全正确)!刚才说到虚拟机装好,软硬件ready,还给软件加了调试语句,当界面拿到不管触控还是鼠标消息都显示点字出来。我就循着线索和推论,打算让屏保快点出来,就把屏保开了,随便设置一个,启动时间1分钟。撸回界面,卧艹,居然直接重现了?!!什么情况,轮家还没做好心理准备。。。
赶紧和元芳讨论下,这会是什么情况。搅了会基做出了一个判断:有一个剥夺界面焦点的逻辑一直很有可疑,但是我说没有焦点鼠标咋可以点呢,而且焦点剥夺的间隔是1秒,在那间隔也应该是可以点的。不过不管怎样,还是打算先去把剥夺焦点的代码注释下先。
正当我打算去注释代码的时候,元芳又凑合过来,疑似眼睛一亮的看到了我们程序的mini窗口(最小化的时候主窗口隐藏,mini窗口显示),他又发出一个惊世言论:没准和这个mini窗口有关系。那么先证明一下:1修改屏保设置是否一定重现问题?结论是;由于正常的操作,基本上是最小化我们程序,才会去设置别的,那么不最小化我们的窗口,直接修改屏保设置是否重现问题?结论是否!
这说明什么?说明修改屏保后会系统会广播一些消息,而如果我们主窗口时最小化的,也许会错过一些东西导致问题出现。如何验证想法并修复BUG? 元芳再次给出神回复:检查切换主窗口和mini窗口显隐的代码,因为C++嵌C#,平时没问题,在上述情况下,是不是需要更可靠的做显隐动作才能保证C++嵌C#窗口消息的正常运作。
于是我找到相应代码,发现对主窗口只显隐了外层C++窗口。正常情况,通过窗口父子关系,C#窗口也得到管理且一切正常。现在,我在隐藏的时候依次隐藏C#窗口,然后是C++;显示的时候先显示C++再显示C#。 最后的最后,一切都正常了。。。元芳好样的!
,也没找我秋后算账,搞得我一直过意不去,又解决不了。艹、艹、艹。
今天我是撸起袖管,装上虚拟机,把硬件connect进虚拟机,软件硬件就位,今天TMD非要搞点名堂出来。首先确认了这必须是软件问题,不是驱动软件问题。我们软件是C++窗口里面嵌着C#的窗口,问题症结必然在这! 可鄙视的是平日里都好好的,非要偶不其然的发作一下。
实在话,之前出现很多次了,众目睽睽之下且我在场的情况都出现3次了,一直抱有侥幸,以为信春哥+心中默念“不出现、不出现、...”就可以的。可它每次还是很给脸的出现了。主观感觉如果一直在操作,此问题不出现,如果老大或者演讲的人把软硬件丢那商量别的事情,过一会回来,就有可能出现了--这是重要线索。
那么为什么丢一会就会出问题呢,丢一会根本等于0操作,它就出现了?感觉这和屏保有千丝万缕的关系(偷看结局之后发现这条推论完全正确)!刚才说到虚拟机装好,软硬件ready,还给软件加了调试语句,当界面拿到不管触控还是鼠标消息都显示点字出来。我就循着线索和推论,打算让屏保快点出来,就把屏保开了,随便设置一个,启动时间1分钟。撸回界面,卧艹,居然直接重现了?!!什么情况,轮家还没做好心理准备。。。
赶紧和元芳讨论下,这会是什么情况。搅了会基做出了一个判断:有一个剥夺界面焦点的逻辑一直很有可疑,但是我说没有焦点鼠标咋可以点呢,而且焦点剥夺的间隔是1秒,在那间隔也应该是可以点的。不过不管怎样,还是打算先去把剥夺焦点的代码注释下先。
正当我打算去注释代码的时候,元芳又凑合过来,疑似眼睛一亮的看到了我们程序的mini窗口(最小化的时候主窗口隐藏,mini窗口显示),他又发出一个惊世言论:没准和这个mini窗口有关系。那么先证明一下:1修改屏保设置是否一定重现问题?结论是;由于正常的操作,基本上是最小化我们程序,才会去设置别的,那么不最小化我们的窗口,直接修改屏保设置是否重现问题?结论是否!
这说明什么?说明修改屏保后会系统会广播一些消息,而如果我们主窗口时最小化的,也许会错过一些东西导致问题出现。如何验证想法并修复BUG? 元芳再次给出神回复:检查切换主窗口和mini窗口显隐的代码,因为C++嵌C#,平时没问题,在上述情况下,是不是需要更可靠的做显隐动作才能保证C++嵌C#窗口消息的正常运作。
于是我找到相应代码,发现对主窗口只显隐了外层C++窗口。正常情况,通过窗口父子关系,C#窗口也得到管理且一切正常。现在,我在隐藏的时候依次隐藏C#窗口,然后是C++;显示的时候先显示C++再显示C#。 最后的最后,一切都正常了。。。元芳好样的!
相关文章推荐
- 今天碰到一个强数据类型集的问题,不知道大家怎么解决呢????
- 使用CsV格式的CDR记录碰到的一个怪问题的解决
- 碰到一个问题,不解决不爽
- java连接mongodb的一个奇葩问题及奇葩解决方式
- 升级vs2010我碰到的一个问题,以及解决方法
- 一个奇葩的oracle分页问题,已经知道解决办法,但是不晓得产生问题的原音~
- 升级vs2010我碰到的一个问题,以及解决方法
- 一直以来我(每个从事linux开发的人)深受“bug”的困扰,好像“bug”不足以描述这种被问题困扰的无奈。因为当在驱动或BSP的开发过程中,所碰到的问题比解决一个bug难得多。 Li
- Client Copy中碰到的一个常见问题解决.
- 知道了一个几年前就碰到没有解决的问题
- 从零开始实现一个电子商务网站----解决碰到的问题(六)
- 安装flex碰到的一个问题及其解决方法(原创)
- 金格签章使用时碰到的奇葩问题解决
- (转)升级vs2010我碰到的一个问题,以及解决方法
- 最近碰到的一个关于memcpy的奇葩问题
- 一个奇葩core dump问题的“解决”
- 今天碰到一个poi解析excel文件的时候报错, 后来发现是这个excel文件单元格里面有公式。删除公式问题解决!
- KB956744补丁无法安装的解决办法[我只是碰到一个补丁无法安装, 问题并未解决]
- Client Copy中碰到的一个常见问题解决.
- 最近碰到一个奇怪有不容易解决的问题,总算搞定!