这太疯狂了。它开始在我的主项目中发生,因此我创建了一个很小的全新示例项目,可以肯定地重现它。
如果重要的话,我正在Win7x64上运行它。 VS2008 SP1。
开始。我创建一个带有按钮的小型对话框应用程序。在该按钮的处理函数中放置一个断点。按钮处理程序函数如下所示:
void CTestProjectDlg::OnBnClickedButton1()
{
int i;
i = 2; // < breakpoint here
i = 3;
}
单击该按钮,击中断点。 F10迈步并繁荣起来:“TestProject.exe中0x0398f77b的第一次机会异常:0xC0000005:访问冲突。”
它使我可以选择“中断”或“继续”。如果我继续,它只会再次击中它,而不会是“第一机会”。是的,我在Debug-> Exceptions dlg中检查了该异常。
如果我中断,则调用堆栈仅向我显示断点所在的行。如果再次输入F10,则再次得到异常,只有调用堆栈在_AfxDispatchCmdMsg()函数中向我显示,而我原来的OnBnClickedButton1()不在调用堆栈中。
我把断点放在哪里都没关系。
如果我继续使用F5而不是F10,则它可以正常工作。
现在..如果我构建发行版并以 Debug模式运行:我会遇到断点,并且所有指针的变量值看起来都是正常的。 F10,这些变成垃圾。 this指针现在为零。 m_csHello现在是
但是,在 Release模式下,未捕获到异常,并且一切正常。 “hello World字符串”将按原样显示在对话框中。
我进行了询问,以查看过去一两天内IT部门是否在我的包装盒中安装了某些补丁程序。这不是2天前发生的事情。
你怎么看? VS2008损坏了吗?
谢谢。
编辑:附加信息。如果我构建/调试x64平台,则不会发生这种情况。仅适用于Win32。
我还查看了包装盒中VS2008的所有修补程序/安全更新。他们是
最后,我将项目放在过去2-3周内未更新的另一台计算机上。它可以在此处找到,并且安装了这些相同的VS更新。
为了这篇文章的目的,我还更改了正在逐步执行的代码。 ..这是一个简单的整数分配,不涉及MFC。
目前,我正在重新安装VS2008。
最佳答案
您说同一项目可以在具有相同版本的Visual Studio的另一台计算机上编译并正常运行。该代码看起来不错,所以,听起来像VS 2008已损坏,需要重新安装。
关于visual-studio-2008 - 仅在逐步通过 Debug模式时才对VS2008 C++ MFC的访问发生冲突,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2777429/