Bug经典回放(四)
来源:互联网 发布:淘宝lolita店铺推荐 编辑:程序博客网 时间:2024/04/29 18:14
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的问题. 结论是. 某些存在依赖关系的操作. 一定注意过程是不是可以被重入,被打断....不要做很多天真的假设.
另外,少要类成员函数的指针. 这个会让调试很痛苦.....
- Bug经典回放(四)
- Bug经典回放(四)
- Bug经典回放(四)
- Bug经典回放(四)
- Bug经典回放(四)
- Bug经典回放(四)
- Bug经典回放(四)
- Bug经典回放(四)
- Bug经典回放(四)
- Bug经典回放(四)
- Bug经典回放(四)
- Bug经典回放(四)
- Bug经典回放(四)
- Bug经典回放(一)
- Bug经典回放(二)
- Bug经典回放(三)
- Bug经典回放四--别让编译器优化掉你想要执行的代码
- FMS3系列(四):在线视频录制、视频回放
- 弹出确认对话框的自定义Web服务器控件ConfirmButton
- 嵌入式软件测试的十大秘诀
- 第10章. 上下文(Context)
- 上周技术关注:微软推出IronPython 1.0
- 页面用几种超级链接样式
- Bug经典回放(四)
- 浅论ViewState及其与Session的关系
- ASP.Net ViewState的实现
- 用偏方解决任务栏音量图标不见
- HPC Bechmarks
- 去除前台生成隐藏的的VIEWSTATE,不会影响机能,使得页面提交更快
- ImagineCup 2007 Lunch !
- 如何序列化对象等
- DataGrid列操作