VisualStudio 2015更新1中C++编辑和继续的改进

在VisualStudio 2015 RTM中,我们在VC++ 2015工具集(V140)中为默认调试引擎中的X86和X64 C++发布了编辑和继续(EnC)支持。 . 在过去的几个月里,我们一直致力于改进体验和支持新的配置。在这篇博客文章中,我将对C++的Enc进行改进。 Visual Studio 2015更新1 .

null

快速重述-编辑并继续允许您在运行时(调试时)修改代码,而无需停止、重新编译并再次启动应用程序!例如,如果您正在调试,并且在断点处停止时注意到代码的某个函数中存在错误,则可以修改源文件,单击“继续”(Go或Step命令),调试器将把您的代码更改应用于已调试的进程,并继续使用新代码进行调试!这有助于加快编辑>构建>部署>调试周期。 更多详情,请参阅我们之前的2015 RTM帖子 .

  • 支持Windows应用商店和DirectX应用程序(支持/bigobj编译器开关) :更新1中的VC++2015工具集现在支持带/bigobj的/ZI编译器开关(EnC开关),默认情况下在Windows应用商店项目和DirectX应用程序上启用该开关。
  • 支持与/DEBUG:FASTLINK调试信息链接的二进制文件: FASTLINK是一个链接器开关,它可以加快构建时间(通过在obj文件中留下一些调试信息,而不是将其全部整合到PDB中) ,更新1中的VC++2015工具集现在支持将EnC与FASTLINK二进制文件一起使用。
  • 在EnC期间显示可取消的等待对话框: 我们现在显示一个等待对话框,通知用户进度,保持UI的响应性,并且还支持取消。 Picture1
  • 如果修改了不支持EnC的文件,则通知用户: 关于EnC可用性的一个常见抱怨是,很难诊断为什么一个编辑被VisualStudio忽略了。这通常是由于编译器或链接器开关与EnC不兼容(例如不使用/ZI编译器开关或/INCREMENTAL链接器开关)。

    对于更新1,如果源文件在调试期间被修改,但没有正确的配置(例如不兼容的编译器/链接器开关),则会显示一个错误对话框,其中包含有关不支持编辑的原因的可操作信息。

    例如,如果源文件是用/Zi(而不是/Zi)编译的,则编辑现在将失败,并出现错误对话框和以下错误(在错误列表或输出>生成中): Picture2 您可以通过单击错误对话框中的“忽略”来选择忽略错误。

  • 保留更多内存以允许对二进制文件应用更多编辑: 使用EnC options(/ZI compiler switch和/INCREMENTAL linker switch)构建的二进制文件中保留的内存已经增加,以防止可怕的“模块[module name]中的保留地址空间不足”错误消息。有了这个变化 您将能够在被删除之前进行更多编辑 被迫停止调试以重新编译二进制文件。
  • 改进指令指针重新映射以防止过时代码警告: 用户反馈显示,许多人遇到“无法确定函数X中的新地址以重新映射指令指针”警告。在这里,指令指针将不会被重新映射到新的(修改过的)代码,而是保留在旧的(未修改的)代码中,这种情况称为“过时代码”(check out) 我们上一篇2015年RTM文章了解更多详情 ). 我们在这方面做了一些改进,以确保找到正确的地址来重新映射IP,并减少代码过时的可能性。
  • 荣誉奖-修复了“致命错误C1092:编辑并继续不支持更改数据类型;生成所需的“不相关更改的误报编译错误: 这是最受欢迎的EnC错误之一。 在EnC重新编译期间,编译器将抛出警告“警告C4656:…数据类型是新的或自最新版本以来已更改,或在其他地方定义不同”,这导致“致命错误C1092:编辑并继续不支持更改数据类型;对于不相关的更改,“需要生成”。使用STL的代码很容易遇到这个错误。

    这是由假阳性引起的 ODR公司 违规,我们已经在更新1中解决了此问题-此警告将不再在EnC重新编译期间导致致命错误。

请让我们知道您的反馈,以及我们可以做些什么来改善下面的评论或通过网站的经验 Visual Studio中的发送反馈功能 或通过 推特 .

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享