gpt4 book ai didi

visual-studio-2008 - VS2008 C++ MFC 访问冲突仅在单步 Debug模式时发生

转载 作者:行者123 更新时间:2023-12-04 17:41:31 27 4
gpt4 key购买 nike

这太疯狂了。它开始发生在我的主项目中,所以我创建了一个很小的示例全新项目来重现它,果然......它不会发生在我创建的只是一个 Win32 控制台应用程序的示例项目中。

如果这很重要,我正在 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() 不再在调用堆栈中。

我把断点放在哪里并不重要。

如果,而不是 F10,我只是继续 F5,它可以正常工作。

现在.. 如果我构建了一个 Release 版本并在 Debug模式下运行:我遇到了断点,所有的指针、变量值看起来都很正常。 F10,这些变成垃圾。 this 指针现在为零。 m_csHello 现在是

但是,在 Release 模式下,不会捕获异常,并且一切正常。 “hello World”字符串按原样显示在对话框中。

我已经询问过 IT 部门在过去一两天内是否在我的盒子上安装了一些补丁。这不是发生在 2 天前。

你怎么认为? VS2008 损坏了吗?

谢谢。

编辑:附加信息。如果我构建/调试 x64 平台,则不会发生这种情况。仅适用于 Win32。
我还查看了包装盒上 VS2008 的所有修补程序/安全更新。他们是
  • kb971092
  • kb972222

  • 最后,我把项目放到了过去2-3周没有更新的另一台机器上。它可以在那里找到,并且安装了这些相同的 VS 更新。

    为了这篇文章,我还修改了正在跳过的代码。 .. 这是一个简单的整数赋值,不涉及 MFC。

    目前我正在重新安装 VS2008。

    最佳答案

    VS2008 SP1,Win7x64,32位调试代码也有同样问题。如果我关闭该选项,问题就会消失

    工具 -> 选项 -> 调试 -> native -> 启用 RPC 调试。

    以下条目可能与此相关:
    Debugging commands (step over/into) cause unhandled exceptions

    关于visual-studio-2008 - VS2008 C++ MFC 访问冲突仅在单步 Debug模式时发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2777429/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com