解决一个只在调试运行状态下才出现的bug
2013-02-20 17:28
218 查看
Win7 64位下,Visual Studio 2010,CFileDialog的DoModal异常崩溃。
按照下面步骤,不需要写一个字,全是MFC自己的代码,很容易重现该问题:
1、打开Visual Studio 2010。
2、新建一个MFC Application工程,MFC
Application->OK->finish:
3、添加x64平台配置:
4、调试运行(F5),便会出现一个多文档应用程序:
点击工具栏打开图标,或者File->Open...弹出一个打开对话框(CFileDialog):
5、选择C盘、D盘、或者E盘等,点击“新建文件夹”按钮,或者在空白处点击鼠标右键:
到此,就会看到程序崩溃了:
根据错误信息,好像是已经删除了的堆内存又被修改了,被调试器捕捉到了。
但是从MFC的代码有看不出问题在哪,微软的代码很诡异又改不了,从MFC源码上是解决不了这个问题了。
虽然在非调试运行状态下不会出问题,但这样毕竟让人不爽!
有一个解决方法是:卸载intel显示选项的右键菜单的控件。
regsvr32 /u igfxpph.dll
然后问题就这样被莫名其妙的解决了,到底是什么问题呢?
按照下面步骤,不需要写一个字,全是MFC自己的代码,很容易重现该问题:
1、打开Visual Studio 2010。
2、新建一个MFC Application工程,MFC
Application->OK->finish:
3、添加x64平台配置:
4、调试运行(F5),便会出现一个多文档应用程序:
点击工具栏打开图标,或者File->Open...弹出一个打开对话框(CFileDialog):
5、选择C盘、D盘、或者E盘等,点击“新建文件夹”按钮,或者在空白处点击鼠标右键:
到此,就会看到程序崩溃了:
根据错误信息,好像是已经删除了的堆内存又被修改了,被调试器捕捉到了。
但是从MFC的代码有看不出问题在哪,微软的代码很诡异又改不了,从MFC源码上是解决不了这个问题了。
虽然在非调试运行状态下不会出问题,但这样毕竟让人不爽!
有一个解决方法是:卸载intel显示选项的右键菜单的控件。
regsvr32 /u igfxpph.dll
然后问题就这样被莫名其妙的解决了,到底是什么问题呢?
相关文章推荐
- 转 VS2005程序运行时出现MSVCP80D.dll not found错误解决方法(VS 2005的一个“Bug”)
- 项目调试时候,出现其中用到的一个组件“访问被拒绝”的解决方法(.net的一个BUG)
- 解决Android开发中在调试模式下运行一个程序后出现Application (xxx) is waiting for the debugger to attach
- 解决一个平均运行一百万次才出现一次的bug
- 在一个分时操作系统中,进程出现由运行状态进入就绪状态,由阻塞状态进入就绪状态的原因分别可能是()
- VS2010 F5调试时出现:“ 尝试运行项目时出错:未捕获通过反射调用的方法引发的异常”解决
- Think PHP关闭调试模式后出现奇怪的bug的解决方法.
- VC6在win10运行时出现无法单步调试问题的解决办法
- VS2017一步一步断点调试解决Dapper语句出现的Bug
- 接口调试的一个bug的解决
- 解决Win7 x64 VS2010调试网站出现 vs2010 未能将脚本调试器附加到计算机上的进程。已附加了一个调试器
- 安装CDH时候出现主机运行状态不良情况的解决
- vs2003启动调试时出现“无法启动调试器,请运行安装程序安装或修复调试器”的解决办法
- 项目调试时候,出现其中用到的一个组件“访问被拒绝”的解决方法。
- 项目调试时候,出现其中用到的一个组件“访问被拒绝”的解决方法
- 项目调试时候,出现其中用到的一个组件“访问被拒绝”的解决方法。 (转)
- 关于出现“运行时间错误,是否要进行调试?”和“0X000000该内存不能为read”的解决方法
- bug解决-Junit运行时,出现No tests found matching Method xxxxxById(cn.bytestream.mongodb.MongoDB4CRUDTest)
- windows 2008 任务计划出现”这项任务的一个实例已在运行“报错的解决方法
- VS 2005 调试过程中不定期出现 ”试图运行项目时出错:无法启动调试。拒绝调试”的对话框的解决方法