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 编辑并继续不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何编辑 Microsoft Visual Studio 2013 编译器开关? [复制]
visual studio 2017社区构建失败,没有显示任何错误
.net转PHP从零开始-配置visual studio 2013 PHP开发环境php for visual studio