通过Visual Studio Enterprise 2019中的时间旅行调试(TTD)预览版,您可以记录在Azure虚拟机上运行的Web应用程序的执行情况,然后准确还原和重现该算法。 TTD与我们的
Snapshot Debugger产品集成在一起,使您可以随意倒带和播放每一行代码,从而帮助识别和预测仅在战斗环境中可能出现的问题。
图片是从Microsoft Store中的Quantum Break(18+)游戏页面上拍摄的。 顺便说一下,它有75%的折扣(10美元)。 如果有人想要但找不到机会,我们建议您。
最有效的调试类型通常发生在所谓的“内部循环”中。 在继续进行版本控制之前,在本地查看和调试代码时。 我们在内部循环发展过程中面临的问题通常更容易理解和诊断,因为它们可以访问且可重复。

今天,我们很高兴地宣布Visual Studio Enterprise中的时间旅行调试(TTD)版本。 使用TTD,我们有机会编写在生产环境中执行的代码,并在Visual Studio中重现执行路径。 TTD还使您能够及时地来回移动,就好像您在对“内部循环”进行本地调试一样。 您还可以访问重要的调试功能,例如本地变量和调用堆栈。
现代调试器通常允许您在某个点(断点)停止,中断整个过程,然后再继续前进。 即使使用
IntelliTrace等更
高级的调试工具 ,您也可以在离散的时间点记录事件和数据。 TTD与快照,日志记录或故障转储文件相比具有显着的优势,因为这些方法通常不包含有关导致最终失败或错误的执行路径的准确信息。
什么是时间旅行调试?
时间旅行调试(TTD)是一种反向调试解决方案,它使您可以记录应用程序或进程中代码的执行并来回播放。 TTD改进了调试功能,因为您可以及时返回以更好地了解导致特定错误的条件。 此外,您可以玩几次以找出最佳解决方法。
TTD技术最近在WinDbg的预览版中引入,用于具有本机代码的脚本 。
我们使用TTD扩展了Snapshot Debugger,因此您可以在应用程序运行时对其进行记录。 然后可以在Visual Studio Enterprise 2019中回放此记录,您可以在其中回放和回放每行代码任意多次。 TTD写入满足快照点条件的线程,并且通常执行到方法结束。 但是,如果在方法结束之前在快照点之后出现“等待”,则记录将停止。 具有有效许可证的Visual Studio 2019发行版将在预览中显示此功能。 我们计划在将来的更新中添加更多的TTD脚本。
TTD入门
可以在最新版本的Visual Studio Enterprise 2019中为运行Windows和ASP.NET(4.8+)的Azure虚拟机启用时间旅行调试的预览。
安装最新版本的Visual Studio Enterprise之后,请完成以下步骤:
1.打开Time Travel Debug所需的项目-确保您具有与Azure虚拟机上发布的源代码相同的版本。
2.选择“
调试”>“附加快照调试器”,然后选择要在其上部署项目的Azure虚拟机以及Azure存储帐户。 首次尝试连接时,需要安装Snapshot Debugger网站扩展。
3.选择“
时间旅行调试”选项,然后单击“
附加”按钮。 Visual Studio进入快照调试器模式后,便可以使用TTD进行记录。

4.创建快照点并将其配置为启用“时间旅行调试”。 单击“
开始\更新集合” 。

5.编译快照后,单击“
查看快照” ,然后可以使用命令栏在记录的方法中来回移动。
TTD预览限制在TTD的初始预览阶段,我们将支持在Azure虚拟机上运行的AMD64 Web应用程序。 我们希望该条目会给您正在运行的进程增加大量开销,从而降低进程速度,具体取决于进程的大小和活动线程的数量。 我们还期望在以下某些情况下调试性能下降:
- 在GC的压缩阶段。
- 例如,当您输入不包含快照点的方法时,传递经过优化的方法。
- 如果您的应用程序在内部下载或卸载应用程序域。
- 记录仅发生在快照点调用的流中。 随后影响备用线程的代码也将降级。
请注意:我们也不会记录异步因果关系。
在初步测试过程中,我们发现TTD文件的大小从几百兆字节到几千兆字节不等,具体取决于会话的持续时间和Web应用程序的持续时间。 但是,在快照调试器会话完成并重新启动应用程序池后,将清除由TTD创建的文件。 对于我们的预发行版,我们还建议使用具有至少8 GB RAM的虚拟机。
立即尝试TTD!
我们对于此预览功能如何帮助您改善Azure中的调试感到异常兴奋,但这只是开始。 我们的团队将继续开发和创建其他TTD功能,并计划在即将发布的Visual Studio版本中添加这些功能。
我们期待您的反馈!