在执行了一些新代码后,我的 C++ 应用程序开始表现得很奇怪(屏幕更新不正确或不完整,有时根本没有屏幕更新)。一段时间后,我们发现新代码导致了访问冲突。奇怪的是,应用程序只是继续运行(但屏幕更新不正确)。
起初我们认为问题是由“try-catch(...)”构造引起的(由一位过度活跃的前同事放在那里),但几个小时后(仔细检查调用堆栈,添加许多断点,... ) 我们发现,如果在绘制事件中存在访问冲突,Windows 会捕获它,并继续运行应用程序。
- 这是正常行为吗?
- Windows 在绘制事件期间捕获异常/错误是否正常?
- 有没有办法禁用它?(如果不是,这意味着我们必须始终在调试器中运行,并在测试代码时启用所有异常)。
编辑:
- 在 XP 上,正确的崩溃(访问冲突后想要的行为)
- 在 Vista 和 Windows 7 上,应用程序继续运行