解决一个只在调试运行状态下才出现的bug
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
然后问题就这样被莫名其妙的解决了,到底是什么问题呢?