Visual Studio Enterprise 2019现提供时间旅行调试功能

微软在其Visual Studio Enterprise 2019上的快照调试器(Snapshot Debugger)集成时间旅行调试(Time Travel Debugging,TTD)功能,让开发者可以纪录应用程序执行路径,并能来回重新播放,更容易地找出仅会出现在生产环境的程序bug。

微软提到,程序最容易调试的形式是在内部循环(Inner Loop),也就是在开发者把程序代码推送到版本控制系统前,在本机端执行审查和调试程序代码的时候,在内部循环遇到的问题,通常都是可访问且可重复的问题,因此容易理解诊断,而在生产环境调试,则需要更详细的信息才能快速定位问题。

现在的调试器通常会让开发者设置中断点,开发者可以选择暂停或继续执行,而这样的方式只能纪录离散时刻的事件以及数据,包括快照、日志记录和崩溃倾印文件等方法,都无法提供失败时的详细执行路径细节。

而TTD则可以提供更详细的调试信息,是一种逆向调试解决方案,让开发者纪录应用程序或是程序的程序代码执行,并且能以向前或是​​向后的方式,重新播放Visual Studio中的执行路径,让开发者可以更全面地掌握导致特定错误的条件,就像是在本地端的内部循环调试一样。

现在微软在快照调试器中集成TTD,让开发者可以纪录应用程序执行,并在Visual Studio 2019 Enterprise中播放录制的内容,由于TTD针对快照点(Snappoint)配对的线程纪录,因此会执行到方法(Method)结束为止。

开发者可以在具有ASP.NET 4.8以上,在Azure虚拟机上的Windows操作系统,使用最新版Visual Studio Enterprise 2019激活TTD预览。开发者在Visual Studio Enterprise中,打开想要使用TTD的项目,并且确保Azure虚拟机上存在一份相同版本的程序代码。选择调试选项中的附加快照调试器,接着选择项目部署具有Azure存储帐号的Azure虚拟机。而要执行这个动作,开发者需要安装快照调试器网站扩展组件。

在附加快照调试器的窗口中选取TTD选项,一旦点击附加之后,Visual Studio就会进入快照调试器模式,开始可以使用TTD纪录应用程序执行。开发者可以创建快照点触发TTD,而在快照收集完成之后,就能使用命令行工具审查快照。

由于现在TTD还在预览阶段,只支持Azure虚拟机上执行的AMD64网页应用程序,微软提到,这个录制的过程,会影响程序的执行性能,影响的程度根据程序的大小与活动线程的数量而不同,而TTD的使用体验,也会在像是垃圾回收压缩阶段等不同情况受到影响,由于程序执行纪录只会由快照点的线程触发,因此之后交替的线程记录状况也会有所变化。

目前预览版本TTD产生的文件大小,从MB到GB都有可能,取决于对话执行的时间以及网页应用程序运行的时间,而TTD产生的文件会在快照调试器对话结束时被移除,微软建议至少应该要在具有8 GB内存的虚拟机上,TTD才能顺利执行。