2016-09-15 134 views
0

我有问题编辑&继续功能升级VS2015升级3.我目前的版本是MS VS社区2015年,版本14.0.25431.01,更新3在Visual Studio 2015更新3编辑并继续不起作用我

我明白,在调试中只能应用一些更改。这是我的经验,直到我安装VS2015更新3.此后,任何更改总是被拒绝,即编辑&继续无用。我相信在我的项目中设置是正确的,(或者至少以前是VS的以前版本)。

我将不胜感激任何帮助。在此先感谢

步骤来重现问题:

  1. 创建默认的控制台应用程序。使用默认的Win32 Debug配置构建它。
  2. 设定断点例如在行22读取HMODULE hModule = ::GetModuleHandle(nullptr);
  3. 启动调试器。它停在22行
  4. 修改从if (hModule != nullptr)if (hModule != NULL)
  5. 按调试工具栏上的应用变化,(或按执行,一步执行下一行或什么迫使VS调试器来实现更改并继续调试
  6. 线24
  7. 的改变未被接受时产生错误,请参阅所附的图片。 enter image description here

事实上,在任何天然的Win32调试C++应用程序的任何变化不能在MS VS调试会话应用。

Libor Jendele

+0

你可以附上图片或错误?它似乎从你的问题中缺失。 – Ramkumar

+0

好的,我刚刚检查了你的内部反馈项目@MSFT。我*猜*是你有/ d2Zi +(或其他编译器选项),覆盖/ ZI(编辑并继续) - 你可以检查吗? – Ramkumar

回答

1

重新编译期间的警告ignoring unknown option '-Z+'表示原始CPP文件是使用未公开的编译器开关/ d2Zi +(根据this似乎用/ Zo替换)编译的。此开关基本上用于通过优化代码获得更丰富的调试信息(here's a good post about it by Bruce Dawson *)。如果CPP文件没有用/ ZI编译,调试器/编译器应该拒绝在编辑和重新编译过程中重新编译它,但是这会导致错误,导致在重新编译期间出现这种随机/不可诊断的错误。

正确的修复方法是用/ Zo(它是交换机的已记录和支持的版本)替换/ d2Zi +,或者从cl命令行完全删除/ d2Zi +,因为AFAIK不会为“调试”配置和编辑并继续应该照常工作。如果在调试>选项下启用了EnC,但是这已经过时并且当前不正确 - 它实际上是VS中的“启用本机兼容模式”选项。注意:Bruce的博客提到如果启用了EnC,则Release配置的丰富调试信息不​​可用。 2015与/ d2Zi +不兼容(防止优化调试过于丰富和详细)。

0

在VS 2012 Update 3中有一个breaking changes in Edit & Continue。报价:

允许预编译(仅限本机):调试选项调试>选项>常规>允许预编译(仅限本机)不再支持Visual Studio 2015 Update 3和默认调试器。

禁用此选项,重建解决方案,然后重试。它应该工作。

+0

@ user1969843,Nikita的建议很有帮助,它确实对VS2015更新3中的VC++的Edit&Continue功能有一些要求/更新:https://blogs.msdn.microsoft.com/vcblog/2016/07/01/c -edit-and-continue-in-visual-studio-2015-update-3/ –

+0

@JackZhai很高兴听到,请投票赞成,以表明其有用 – Nikita

+0

感谢您的回复。我检查了所有必需的设置是否正确,(包括禁用允许预编译)。我做了重建;问题依然存在! 我遇到的麻烦是因为“新增全局或静态变量'SG228034'被添加了”msg,看到附带的png出错了。在每个项目中,我编辑并继续,“应用更改”在错误列表中生成类似错误消息!我不知道我的解决方案中有这样的变量;我不会改变它。这必须在内部生成。请找到我的解决方案的链接https://app.box.com/s/d2d3bslq5gi1xijsvc3eem1241a9cb31 任何其他想法? – user1969843