Visual Studio 2013 编辑并继续不起作用

Posted

技术标签:

【中文标题】Visual Studio 2013 编辑并继续不起作用【英文标题】:Visual Studio 2013 Edit and Continue not working 【发布时间】:2014-03-11 15:21:55 【问题描述】:

使用 VS2013 Pro 在调试 MFC 程序时,我无法使用“编辑并继续”。我创建了一个新的 MFC 项目进行测试。

操作系统是 Windows 7 64 位,我正在运行 Visual Studio 2013 12.0.30110.00 Update1。

Tools->Options->Debugging->Edit and Continue 下,我选中了Enable Edit and Continue。我已经取消选中它并检查了它,但是每当我在调试时修改代码时,我都会收到以下消息:

源文件已更改。它不再与用于构建被调试应用程序的文件版本匹配。

除了标签大小之外,我基本上没有更改任何设置,并且我已将键盘映射方案设置为 VC6。

我缺少什么设置来启用编辑和继续?

【问题讨论】:

真的需要有人在这里编写编辑并继续向导!这是一个“财产地狱”的案例! :) 【参考方案1】:

默认情况下,本机代码禁用“编辑并继续”。启用:

    工具菜单上,点击选项。 在选项对话框中,打开Debugging节点,选择Edit and Continue类别。 在 Native-only options 组中,选择 Enable native Edit and Continue

编辑: 测试本机编辑并继续的步骤正在运行:

    开始VS 2013 创建一个新的 MFC 项目: 文件->新建项目->MFC应用程序->确定。 在 MFC 应用程序向导上选择完成。 构建并开始调试: 构建->构建解决方案 调试->开始调试 闯入程序: 调试->全部破解 更改代码: 打开 OutputWnd.cpp 并找到 COutputWnd::OnSize(第 80 行) 在函数开头插入这一行:cx = cx / 2; 继续执行: 调试->继续 调整应用程序窗口的大小以查看代码更改对底部输出窗格的影响。它的宽度应该是所需大小的一半。

【讨论】:

感谢您的这些设置。但是,现在我得到以下对话框:对调试时无法应用的代码进行了编辑。单击“重新启动”以停止调试、重新生成代码并重新开始调试。单击编辑以更改代码。单击忽略以继续而不应用编辑。注意:我想做的只是能够编辑和继续 MFC 程序。 我添加了一些测试步骤来帮助找出问题所在。 哇!你说的对!!但是,你能解释一下为什么我在启用纯原生选项之前创建的测试 vanilla MFC 对话框仍然不起作用吗?我还有一个包含大约 60K 行的 MFC 项目,我希望在其中让“编辑并继续”工作。我完全被难住了。尽管如此,非常感谢您证明“编辑并继续”是可行的。 在下面查看我的帖子发现问题 - 现在我需要解决方案【参考方案2】:

编辑和继续也是每个项目的设置。

    必须在C++ -> General -> Debug Information Format: "Program Database for Edit And Continue (/ZI)" 下的编译器选项中设置 还必须更改链接器设置。链接器必须使用增量链接。 Linker -> General -> Enable Incremental Linking = Yes 或(对于 VC 2012 用户)C++ -> All Options -> Enable Function-Level Linking = Yes (/Gy)

更多信息请阅读MSDN。

【讨论】:

感谢您的信息。不幸的是,这两个项目设置都已默认设置。我检查了您指向 MSDN 的链接并想明确应用更改,但调试菜单中没有“应用代码更改”。调试菜单下确实存在“选项和设置”。在那里,在“Debugging->Edit and Continue”下,“Enable Edit and Continue”被选中,但一切都是灰色的。 是否使用了一些无法进行编辑和继续的设置?查看链接... 我的测试,使用标准设置。我创建了一个新的 MFC 项目。一个对话框并静态链接。然后我编译。然后我在 OnInitDialog() 中设置了一个断点。然后我调试运行到断点。我在断点下方的某处添加一行,int iTest = 6;然后我继续。没有运气!【参考方案3】:

最后一个提示有帮助,但我们必须这样做

设置“图像具有安全异常处理程序”= NO(/SAFESEH:NO)

在我们解决方案的所有项目中!

【讨论】:

【参考方案4】:

我完成了上述所有步骤,但没有任何帮助(谢谢大家)。

我的解决方案是:

项目 -> 属性 -> 链接器 -> 高级:

设置

"图像具有安全异常处理程序" = NO(/SAFESEH:NO)

应用、确定和重建项目。

希望对你有帮助。

【讨论】:

尽管有所有有用的提示,但当我不使用预编译的标头并使用静态链接时,我仍然无法让 Edit-And-Continue 工作。为了进行测试,我启动了一个新项目,然后在 Project->Properties->Configuration Properties->C/C++->Precompiled Headers->Precompiled Header = Not Using Precompiled Headers 下。还有 Project->Properties->Configuration Properties->General->Use of MFC=Use MFC in Static Library。我尝试添加此页面上提到的其他标志,但没有运气。【参考方案5】:

为了它的价值,我也一直在把头发拉出来。我终于通过更改以下设置进行编辑并继续工作:

项目>属性>链接器>所有选项>“图像具有安全异常处理程序”。

设置为否 (/SAFESEH:NO)。我进去删了。我没有将其设置为“是”或“否”。我只是保持空白。我很想知道空白意味着什么。但是编辑和继续现在对我有用。也许对你有帮助。

【讨论】:

【参考方案6】:

具有“发布配置”的项目将禁用编辑并继续。

改变这一点

    打开“配置管理器” 将项目的配置从发布更改为调试 重建和调试项目

【讨论】:

【参考方案7】:

如果您的项目的平台工具集设置为 Visual Studio 2012 (v110),而不是通常的 Visual Studio 2013 (v120),“编辑并继续”也将不起作用。

此设置位于项目 > 配置属性 > 常规 > 平台工具集中。

【讨论】:

感谢您提供更多信息。我的平台工具集是 Visual Studio 2013 (v120_xp)。我必须支持 XP。【参考方案8】:

此问题的解决方案在 Microsoft 文档中...

如果 IntelliTrace 已启用并且您同时收集 IntelliTrace 事件和呼叫信息,则“编辑并继续”将被禁用。

在 Visual Studio 的菜单上,进入工具>>选项 - 选择“IntelliTrace”选项卡并让 IntelliTrace events only 选中.. 保存,重新启动 Visual Studio 并......

您的“编辑并继续”将再次起作用!

【讨论】:

缺少“IntelliTrace”选项卡!在“调试”之后,应该是“IntelliTrace”,我有“性能工具”。我已展开所有选项卡,但找不到“IntelliTrace”。我正在使用 Visual Studio 2013 Pro 版本 12.0.30626.00 更新 3 RC。救命!!

以上是关于Visual Studio 2013 编辑并继续不起作用的主要内容,如果未能解决你的问题,请参考以下文章

安装visual studio2013时显示 无法找到包源

如何编辑 Microsoft Visual Studio 2013 编译器开关? [复制]

如何评价Visual Studio Code

visual studio 2017社区构建失败,没有显示任何错误

Visual Studio 不会因用户未处理的异常而中断

.net转PHP从零开始-配置visual studio 2013 PHP开发环境php for visual studio