Visual Studio 2013编辑并继续工作无效。

7
使用VS2013 Pro调试MFC程序时,无法使用“编辑和继续”功能。我创建了一个新的MFC项目进行测试。
操作系统为Windows 7 64位,运行的是Visual Studio 2013 12.0.30110.00 Update1。
在“工具->选项->调试->编辑和继续”下,我已经勾选了“启用编辑和继续”。我尝试取消勾选并重新勾选,但只要我在调试时修改代码,就会收到以下消息:
“源文件已更改。它不再与正在调试的应用程序版本匹配。”
基本上,除了标签大小和键盘映射方案设置为VC6之外,我没有更改任何设置。
请问我缺少哪个设置才能启用编辑和继续?

真的有人需要在这里编写一个编辑和继续向导!这是一个“属性地狱”的情况! :) - JCx
8个回答

8
默认情况下,本机代码不支持“编辑和继续”功能。若要启用此功能,请按以下步骤操作:
  1. 工具菜单上,单击选项
  2. 选项对话框中,展开调试节点,选择编辑和继续类别。
  3. 仅限本机选项组中,选择启用本机编辑和继续
编辑: 测试本机“编辑和继续”是否正常的步骤如下:
  1. 启动 VS 2013
  2. 创建一个新的 MFC 项目:
    • 文件->新建项目->MFC 应用程序->确定
    • 在 MFC 应用程序向导中选择 完成
  3. 生成并开始调试:
    • 生成->生成解决方案
    • 调试->开始调试
  4. 中断程序:
    • 调试->中断
  5. 进行代码更改:
    • 打开 OutputWnd.cpp 文件,找到 COutputWnd::OnSize 函数(第 80 行)
    • 在函数开头插入此行:cx = cx / 2;
  6. 继续执行:
    • 调试->继续
  7. 调整应用程序窗口大小以查看代码更改对底部的输出窗格的影响。它的宽度应为所需大小的一半。

1
感谢您提供这些设置。但是,现在我收到以下对话框:在调试时无法应用对代码的编辑。 单击“重新启动”停止调试,重建代码并重新启动调试。 单击“编辑”以更改代码。 单击“忽略”以继续而不应用编辑。注意:我想做的就是能够编辑和继续运行MFC程序。 - MaxiFlash
我已经添加了一些测试步骤来帮助找出问题所在。 - CarlJohnson
哇!你说得对!!但是,你能解释一下为什么我在启用本地选项之前创建的测试vanilla MFC对话框仍然无法工作吗?我还有一个大约有60K行的MFC项目,我希望能让“编辑和继续”正常工作。我完全被难住了。不过,非常感谢你证明了“编辑和继续”的可行性。 - MaxiFlash
请看下面我的帖子 找到问题了 - 现在我需要一个解决方案 - MaxiFlash

3
编辑和继续也是每个项目的设置。
  1. 必须在编译器选项下设置,路径为C++ -> General -> Debug Information Format: "Program Database for Edit And Continue (/ZI)"
  2. 同时还需要更改链接器设置。链接器必须使用增量链接。链接器 -> General -> Enable Incremental Linking = Yes 或 (对于VC 2012用户) C++ -> All Options -> Enable Function-Level Linking = Yes (/Gy)
有关更多信息,请阅读MSDN

感谢您的信息。不幸的是,这两个项目设置已经默认设置。我检查了您提供的MSDN链接,并想显式应用更改,但在调试菜单中没有“应用代码更改”选项。在调试菜单下存在的是“选项和设置”。在那里,在“调试->编辑和继续”下,“启用编辑和继续”被选中,但所有内容都是灰色的。 - MaxiFlash
你是否使用了一些设置,使得编辑和继续变得不可能?请查看以下链接... - xMRi
我的测试使用标准设置。我创建了一个新的MFC项目,包括对话框和静态链接。然后我进行编译。接着我在OnInitDialog()函数中设置了一个断点。然后我进行调试,一直运行到断点处。我在断点下方添加了一行代码:int iTest = 6; 然后我继续执行,但是没有成功! - MaxiFlash

1
一个具有“发布配置”的项目将禁用编辑和继续功能。
要更改此设置:
  1. 打开“配置管理器”
  2. 将项目的配置从“发布”更改为“调试”
  3. 重新构建并调试项目

1

我按照上面描述的步骤都做了,但是没有帮助 (感谢大家)。

我的解决方案是:

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

设置

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

应用, 确定, 并重新构建项目.

希望能对你有所帮助.


尽管有很多有用的提示,但我仍然无法在不使用预编译头文件和静态链接时使“编辑并继续”功能正常工作。 为了测试,我启动了一个新项目,然后在 项目->属性->配置属性->C/C++->预编译头->预编译头 = 不使用预编译头文件。 还有 项目->属性->配置属性->常规->MFC 的使用=使用静态库中的 MFC。 我已经尝试添加此页面上提到的其他标志,但没有成功。 - MaxiFlash

1
上一个提示有所帮助,但我们必须在我们解决方案的所有项目中设置“Image Has Safe exception handlers”= NO(/SAFESEH:NO)。

1

就我所知,我也在这个问题上苦苦挣扎。我最终通过更改以下设置使编辑和继续工作:

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

它被设置为 No (/SAFESEH:NO)。我进去删除了它。我没有将其设置为 YES 或 NO。我只是让它保持空白。现在编辑和继续对我有效了。也许它会对你有所帮助。


0

这个问题的解决方案在微软文档中...

如果启用了 IntelliTrace 并且收集了 IntelliTrace 事件和调用信息,则禁用“编辑并继续”功能。

在 Visual Studio 菜单上选择“工具”>>“选项”- 选择“IntelliTrace”选项卡,然后勾选“仅 IntelliTrace 事件”。保存,重新启动 Visual Studio,然后......

您的“编辑并继续”功能将再次正常工作!


“IntelliTrace”选项卡不见了!在“调试”之后,应该有“IntelliTrace”,但我只看到了“性能工具”。我已经展开了所有的选项卡,但是无论如何都找不到“IntelliTrace”。我使用的是Visual Studio 2013专业版12.0.30626.00更新3 RC版本。求助!! - MaxiFlash

0

如果您的项目平台工具集设置为Visual Studio 2012(v110),而不是通常的Visual Studio 2013(v120),则编辑和继续也无法正常工作。

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


感谢提供这些额外的信息。我的平台工具集是Visual Studio 2013(v120_xp)。我必须支持XP系统。 - MaxiFlash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接