Bug经典回放(四)

news/2024/7/8 4:42:23

Bug现象:
    还是调试别人的程序. 这次是GUI.  我们的GUI是基于SDL OpenGL的. 程序运行以后进行视频播放.在出现的工具条上不停的点击几下后. 整个GUI系统均停止响应.
    工具条有个属性.在开始播放音乐或者视频后.会根据播放引擎通过一个引擎来设置toolbar的属性. 比如.在同一个位置放置不同命令的Button. 激活或者关闭一些按钮. 如果关闭这个功能. 那么Bug消失. 我开始的时候是怀疑多线程的问题. 干掉线程后.问题依旧...
    因为 GUI的这个问题只在Linux下存在. 而Linux下的GDB又没办法准确的追踪C++ RTTI信息. 调试非常困难. 只能慢慢分析代码.
    经过将近6个小时的分析. 发现鼠标按下去时候. GUI系统会设置一个m_pCaptureWindow.表示窗口系统抓住这个窗口.并把鼠标消息往里面传递. 鼠标抬起的时候, 则释放这个窗口m_pCaptureWindow=NULL,.  鼠标抬起或者移动的时候 .发现焦点不在这个Window内则不处理.   如果这个在鼠标按下和释放过程中. 那个CaptureWindows被disable掉.则会导致整个消息路由全部被阻塞........
  

    这个Bug也是让我调试的比较久的一个Bug. 甚至还怀疑过Linux WindowManager的问题.  结论是. 某些存在依赖关系的操作. 一定注意过程是不是可以被重入,被打断....不要做很多天真的假设.

    另外,少要类成员函数的指针.  这个会让调试很痛苦.....





http://www.niftyadmin.cn/n/3647768.html

相关文章

一般拓扑学--From百度(看了这个,终于明白什么是拓扑了)

用点集的方法研究拓扑不变量的拓扑分支。它的前身是点集拓扑学。点集拓扑学产生于19世纪。G.康托尔建立了集合论,定义了欧几里得空间中的开集、闭集、导集等概念,获得了欧几里得空间拓扑结构的重要结果。1906年M.-R.弗雷歇把康托尔的集合论与函数空间的研…

和快手大牛的技术面谈,我先收藏为敬

前言 前段时间发放了学习资料给予自学java的同学们,自学虽好,但是架不住没有老师讲解重侧点(实际上许多培训班的老师也是水分多多,甚至无实战经验),今天我就抽空把java零基础入门(六个月&#…

恶搞的NVIDIA驱动

昨天做水波,遇到一个十分可恶的bug。程序在笔记本的84.xx驱动下十分正常。在台式机的6600显卡,84.xx驱动下工作基本正常,但是水波还是能看到的,但是如果shader所在路径不是很深的话,同一个VS链接到不同的PS会报错&…

和快手大牛的技术面谈,瞬间高大上了!

前言 Mysql的锁机制确实非常重要,所以在这里做一个全面的总结整理,便于以后的查阅,也分享给大家。 Mysql的锁机制还是有点难理解的,所以这篇文章采用图文结合的方式讲解难点,帮助大家理解,讲解的主要内容…

VTF的水波终于移植完了.

以前那个破2D水终于移植到GPU上了.这个是质点弹簧系统,下来可以模拟波动方程了. 128 x 128的mesh grid, CPU计算的时候fps只有12fps.现在已经有80fps了.回头再用vtune查查什么地方慢. 估计上到120fps问题应该不大的.用了NV的VTF. 发现恶心的是VTF只支持32bit float纹理. 两种格…

和网易大佬的技术面谈,冲刺7天拿下Offer!

前言 MySQL 是最流行的关系型数据库管理系统(RDBMS)之一。 MySQL作为一个关系型数据库管理系统,因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。虽然功能未必很强大,但因为它…

Nebula2探秘11-Simple Window

Nebula2探秘11-Simple Windowhappykevins文前面的10节主要讲的是Nebula2内核层模块的应用,所以一直在黑黑Dos控制台下工作,可能大家已经非常想念Windows窗口了:) 从本章起,我将开始介绍Nebula2的应用层模块,并以一个最简单的Windo…

和网易大佬的技术面谈,极其重要

前言 今年的金三银四已经过去一大半了,在这其中参与过不少面试,2021都说工作不好找,这也是对开发人员的要求变向的提高了。 之前在Github上收获15Kstar的Java核心神技(这参数,质量多高就不用我多说了吧)非…