在您关注的代码执行时,Snapshot Debugger 会拍摄生产环境中应用的快照。 若要指示调试器拍摄快照,请在代码中设置快照点和日志点。 调试器使你能够确切地查看出了什么问题,而不会影响生产应用程序的流量。 快照调试器可帮助你大幅减少解决生产环境中出现的问题所需的时间。
快照点和记录点类似于断点,但与断点不同的是,快照点不会在命中时停止应用程序。 通常,在快照点捕获快照需要 10-20 毫秒。
在本教程中,你将:
- 启动快照调试器
- 设置快照点并查看快照
- 设置日志点
先决条件
适用于 Azure Kubernetes 服务的快照调试器仅适用于具有 Azure 开发工作负荷的 Visual Studio 2019 Enterprise 或更高版本。 (在“单个组件”选项卡下,可在“调试和测试>”下找到它快照调试器。)
如果尚未安装,请安装 Visual Studio 2019 Enterprise。
快照集合适用于以下 Azure Kubernetes 服务 Web 应用:
运行在 Debian 9 上的 ASP.NET Core 应用程序需要 .NET Core 2.2 或更高版本。
ASP.NET Alpine 3.8 上运行的 .NET Core 2.2 或更高版本上运行的核心应用程序。
在 Ubuntu 18.04 上运行的 .NET Core 2.2 或更高版本支持的 ASP.NET Core 应用程序。
注释
为了帮助你在 AKS 中启用对 Snapshot Debugger 的支持,我们提供了一个 存储库,其中包含一组 Docker 文件,用于演示 Docker 映像上的设置。
打开项目并启动快照调试器
打开您想要进行快照调试的项目。
重要
若要快照调试,需要打开发布到 Azure Kubernetes 服务的 相同版本的源代码 。
选择 “调试 > 附加快照调试器...”。选择 Web 应用部署到的 AKS 资源以及 Azure 存储帐户,然后单击“ 附加”。 Snapshot Debugger 还支持 Azure 应用服务 和 Azure 虚拟机(VM)及虚拟机规模集。
注释
(Visual Studio 2019 版本 16.2 及更高版本)Snapshot Debugger 已启用 Azure 云支持。 确保所选的 Azure 资源和 Azure 存储帐户都来自同一个云。 如果对企业的 Azure 符合性 配置有疑问,请联系 Azure 管理员。
Visual Studio 现在处于快照调试模式。
“模块”窗口会显示所有已加载到 Azure 应用服务中的模块(请通过选择“调试 > Windows > 模块” 来打开此窗口)。
设置对齐点
在代码编辑器中,单击感兴趣的代码行旁边的左侧区域以设置一个断点。 请确保您对即将执行的代码有所了解。
单击“ 开始集合 ”以打开快照点。
小窍门
查看快照时无法单步执行,但可以在代码中放置多个快照点,以在不同的代码行执行。 如果代码中有多个快照点,快照调试器可确保相应的快照来自同一个最终用户会话。 即使有许多用户点击你的应用,Snapshot Debugger 也会执行此作。
截取快照
设置快照点后,您可以通过进入网站的浏览器视图并运行标记的代码行来手动生成快照,或者等待用户在网站使用过程中自动生成快照。
检查快照数据
命中快照点时,“诊断工具”窗口中会显示一个快照。 若要打开此窗口,请选择 “调试 > Windows > 显示诊断工具”。
双击快照点以在代码编辑器中打开快照。
在此视图中,可以将鼠标悬停在变量上以查看数据提示、使用 局部变量、 监视和 调用堆栈 窗口,以及计算表达式。
网站本身仍处于实时状态,最终用户不会受到影响。 默认情况下,每个快照点只捕获一个快照:捕获快照后,快照点关闭。 如果要在快照点捕获另一个快照,可以通过单击 “更新集合”来重新打开快照点。
还可以向应用添加更多快照点,并使用 “更新集合 ”按钮打开它们。
需要帮助? 有关快照调试页面,请参阅故障排除和已知问题和常见问题解答。
设置条件快照点
如果很难在应用程序中重新创建某特定状态,请考虑使用条件快照点。 条件快照点可帮助你控制何时拍摄快照,例如变量何时包含要检查的特定值。 可以使用表达式、筛选器或命中计数设置条件。
设置条件断点
右键单击对齐点图标(空心球体),然后选择 “设置”。
在 snappoint 设置窗口中,键入表达式。
在上面的插图中,只有在
visitor.FirstName == "Dan"
时才对快照点拍摄快照。
设置日志点
除了在命中快照点时拍摄快照之外,还可以配置快照点来记录消息(即创建日志点)。 无需重新部署应用即可设置日志点。 Logpoint 虚拟执行,不会对正在运行的应用程序造成任何影响或副作用。
创建日志点
右键单击对齐点图标(蓝色六边形),然后选择 “设置”。
在对齐点设置窗口中,选择 操作。
在 “消息 ”字段中,可以输入要记录的新日志消息。 还可以通过将变量放在大括号内来评估日志消息中的变量。
如果选择 “发送到输出”窗口,则当命中日志点时,消息会显示在“诊断工具”窗口中。
如果选择“发送到应用程序日志”,当日志点被命中时,消息会出现在任何可以看到来自
System.Diagnostics.Trace
(或 .NET Core 中的ILogger
)消息的地方,例如App Insights。
相关内容
本教程介绍了如何使用适用于 Azure Kubernetes 的 Snapshot Debugger。 你可能想要阅读有关此功能的更多详细信息。