调试在Azure虚拟机和Azure Kubernetes中运行的实时应用程序

   原文

我们很高兴地宣布,在我们的Visual Studio Enterprise 2019预览中,我们正在扩展Snapshot Debugger支持,而不仅仅是承载ASP.NET Core和ASP.NET应用程序的Azure App Services,现在还包括Azure虚拟机(VM),Azure虚拟机规模集(VMSS)和Azure Kubernetes服务(AKS)!

Visual Studio 2017 Enterprise 15.5普遍可用时,我们引入了Snapshot Debugger ,这是一种创新的诊断工具,使您能够快速准确地评估Azure生产环境中的问题,而无需停止流程并且对性能影响最小。

当生产中出现意外问题时,很难在您的测试环境中复制确切的条件,而在本地开发机器上几乎不可能这样做。您可能会考虑让DevOps团队“开启”生产日志记录,但这依赖于您已经预料到部署之前可能出现问题的位置。您也可以要求进行流程转储,但这需要完美的时间和一些运气来捕获最重要的细节,您还必须衡量您的收集策略可能会如何负面影响协议性能。

快照调试器提供熟悉且强大的调试体验,允许开发人员在代码中设置Snappoints和Logpoints ,类似于调试器断点和跟踪点。在生产环境中点击Snappoint时,动态创建快照而不停止该过程。然后,开发人员可以使用Visual Studio附加到这些快照,看看变量,本地,手表和调用堆栈窗口发生了什么,这一切都是在实时站点继续为您的客户提供服务的同时。

Azure虚拟机/ Azure虚拟机规模集

对于大多数PaaS场景,Azure App Service能够封装完整的端到端体验。但是,对于需要更好地控制其平台和环境的开发人员和组织,VM仍然是关键选项,Snapshot Debugger在Visual Studio的最新预览中支持它们。

将VM / VMSS设置为托管ASP.NET或ASP.NET Core Web应用程序后,可以在Visual Studio 2019中打开项目,然后单击“Debug-> Attach to Snapshot Debugger ...”菜单项,其中您现在可以选择VM / VMSS,如图所示。

UI体验几乎完全相同,但现在您需要选择Azure存储帐户来收集快照日志并共享快照收集计划(App Services还需要预览2中的Azure存储)。

选择“安装远程调试器扩展”选项将提示Visual Studio 在Azure中安装扩展 ,这是查看快照所必需的。此过程还会打开一组特定的端口(30398,31398,31399,32398),以便于与本地计算机进行通信,这些端口不是检索和查看日志点所必需的。

Azure Kubernetes服务(AKS)

Azure提供了令人难以置信的跨平台体验,我们的调试和诊断工具现在可以在我们的Kubernetes服务产品中提供功能平等。

在尝试使用AKS中的任何Snapshot Debugger功能之前,至关重要的是Docker镜像包括安装在全局位置的ASP.NET Core 2.2+,以及正确配置的Snapshot Debugger和必需的环境变量。

为了帮助您在AKS中启用对Snapshot Debugger的支持,我们提供了一个包含一组Dockerfiles的repo,它们演示了Docker镜像的设置 。我们支持Linux的三种变体(Debian,Alpine和Ubuntu),它们根据ASP.NET Core版本,OS平台和平台架构进行组织。

例如,ASP.NET Core 2.2 Debian 9(Stretch)x64 Dockerfile位于/2.2/stretch-slim/amd64/Dockerfile 。这个Dockerfile使用Debian 9 x64作为ASP.NET Core 2.2 Runtime的基础生成一个映像,它包含最新支持的Snapshot Debugger后端包,并设置环境变量以将调试器加载到.NET Core应用程序中。

尝试预览

最新的Snapshot Debugger体验现已预览, 下载并在此处进行试用

此预览支持以下方案:

  • 运行ASP.NET Core(2.0+)或ASP.NET(4.6.1+)的Windows操作系统上的Azure App Services。
  • 运行ASP.NET Core(2.0+)或ASP.NET(4.6.1+)的Windows操作系统上的虚拟机。
  • 运行ASP.NET Core(2.2+)的Azure Kubernetes服务(Linux Docker容器)。

如果您在使用Snapshot Debugger时遇到任何问题,请查看有关Visual Studio中快照调试的故障排除和已知问题的本指南。

我们很乐意倾听您的反馈。要报告问题,请使用Visual Studio中的“报告问题”工具。您将能够在Visual Studio开发人员社区站点上跟踪您的问题,您还可以在其中提出问题并找到答案。

Visual Studio Diagnostics项目经理Mark Downie
@poppastring Mark是Visual Studio Diagnostics团队的项目经理,致力于Snapshot Debugger。