在Visual Studio 2015 Update 3中,“编辑并继续”对我不起作用

时间:2016-09-15 15:14:13

标签: debugging visual-studio-2015

我遇到编辑& amp;将VS2015升级到升级后继续功能3.我当前的版本是MS VS Community 2015,版本14.0.25431.01,更新3

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

我会感激任何帮助。提前致谢

重现问题的步骤:

  1. 创建默认控制台应用程序。在默认的Win32 Debug配置中构建它。
  2. 设置断点,例如在第22行读取HMODULE hModule = ::GetModuleHandle(nullptr);
  3. 启动调试器。它停在第22行。
  4. 将第24行从if (hModule != nullptr)修改为if (hModule != NULL)
  5. 按“调试”工具栏上的“应用更改”(或按下执行,步骤执行下一行或任何强制VS调试器实施更改并继续调试的内容
  6. 不接受更改产生错误,请参阅附图。 enter image description here
  7. 实际上,任何本机Win32 Debug C ++应用程序中的任何更改都无法在MS VS调试会话中应用。

    Libor Jendele

2 个答案:

答案 0 :(得分:1)

重新编译期间的警告ignoring unknown option '-Z+'表示原始CPP文件是使用未记录的编译器开关/ d2Zi +编译的(根据this,它似乎被/ Zo替换)。此开关主要用于通过优化代码(here's a good post about it by Bruce Dawson *)获得更丰富的调试信息。这与/ ZI(带有编辑和继续的程序数据库)有些不一致 - 如果CPP文件没有使用/ ZI编译,调试器/编译器应该拒绝在编辑和继续期间重新编译它,但这会滑过裂缝,在重新编译期间导致此类随机/不可识别的错误。

正确的解决方法是将/ d2Zi +替换为/ Zo(这是交换机的文档和支持版本),或者从您的cl命令行中完全删除/ d2Zi +,因为AFAIK它没有为"调试"配置,编辑和继续应该照常工作。

*注意:Bruce的博客提到,如果在Debug>下启用了EnC,那么发布配置的丰富调试信息将不可用。选项,但这已经过时且目前不正确 - 它实际上是选项"启用原生兼容模式"在VS 2015中,与/ d2Zi +不兼容(阻止优化调试变得丰富和详细)。

答案 1 :(得分:0)

在VS 2012 Update 3中,有一个breaking changes in Edit & Continue。引用:

  

允许预编译(仅限本机):调试选项Debug>选项>一般> Visual Studio 2015 Update 3和默认调试程序不再支持允许预编译(仅限本机)。

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