前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >适用于 Linux 的 .NET Core App Service 诊断工具正式发布

适用于 Linux 的 .NET Core App Service 诊断工具正式发布

作者头像
Edi Wang
发布于 2021-11-30 08:28:59
发布于 2021-11-30 08:28:59
1.6K0
举报
文章被收录于专栏:汪宇杰博客汪宇杰博客

作者:Mark Downie, Puneet Gupta

翻译:汪宇杰

导语

我们很高兴地宣布面向 .NET Core 的 App Services Linux 诊断工具正式发布。借助此功能,我们现在为收集可帮助您调试应用程序代码问题的深度诊断数据提供内置支持。这些数据包括内存转储和分析器跟踪。这些工具使开发人员能够诊断 Linux 上的各种 .NET 代码场景,包括:

  • 性能缓慢
  • 高内存
  • 高CPU
  • 运行时错误和异常

这些工具使您能够自我诊断您的应用程序,以确定应用程序代码是否导致了问题。

此工具已通过最新的 Azure App Service 平台更新 (96) 启用。要检查您的 Linux 应用程序的当前平台版本,请从您的应用程序的 kudu 控制台检查环境变量 PLATFORM_VERSION。

在 Diagnose and Solve 中收集数据

要在 Linux 中托管的 .NET Core 应用程序上访问这些新功能,请导航到 Diagnose and Solve 页面 > Diagnostics Tools,然后选择 Collect .NET Profiler Trace 或 Collect Memory Dump。

在 Kudu 中收集数据

Linux 应用程序服务的 Kudu 控制台已更新,以在 Process Explorer 页面上包含新的内存转储和配置文件收集选项。

要导航到这种新的 Kudu 界面,请使用以下地址(<mysite>替换为你的应用程序名称):https://<mysite>.scm.azurewebsites.net/newui 以查看新界面。

当您选择 Process Explorer 页面时,您可以确定要调试的流程。使用下拉菜单选择内存转储的类型,然后单击Collect Dump。或者,您可以从下拉列表中选择配置文件的长度,然后单击 Start Profiling。

分析问题

使用最新版本的 Visual Studio,您现在可以打开和分析在 Linux 上收集的托管转储,并使用 Visual Studio 中可用的一流调试工具!

在 Visual Studio 中打开托管的 Linux 核心转储

Windows 机器上创建的内存转储具有众所周知的扩展名 (*.dmp),因此与您最喜欢的内存分析工具有直接的关联。默认情况下,在 Linux 机器上生成的核心转储是在没有扩展名的情况下创建的。

如果您的托管核心转储没有扩展名,您可以使用“打开文件”对话框,或将文件拖放到您的 IDE 中,Visual Studio 会自动将其识别为 Linux 核心托管内存转储并将其打开。

但是,如果文件被重命名为包含 Windows 转储扩展名 (*.dmp),那么就需要在“打开文件”对话框中使用 Visual Studio 的“打开方式”功能,更多详细信息请点击此处。

https://devblogs.microsoft.com/visualstudio/linux-managed-memory-dump-debugging/#opening-the-linux-core-dump-in-visual-studio

Linux 核心转储文件摘要

打开托管 Linux 核心转储文件摘要窗口后,将显示转储文件的摘要和模块信息,以及您可以执行的操作列表,这与 Visual Studio 中现有的转储处理体验保持一致。

要开始调试,请从摘要页面的“Actions”菜单选择“Debug with Managed Only”,然后开始使用您已经习惯的牛逼调试工具。

例如,您可以从使用并行堆栈窗口查看线程或任务列表开始。或者通过在线程之间切换并从 Calls Stacks 视图中检查最有趣的帧来更深入地挖掘。然后,您可以使用 Locals 或 Autos 窗口检查变量的值和状态。本质上,您可以检查流程的每个细节,就像在 Linux 上的托管代码中设置断点一样。

诊断分析

Visual Studio 还开发了一组分析器来帮助识别内存转储中可能表明生产服务存在问题的关键信号。Visual Studio 目前支持以下分析器,并在不久的将来推出新的和改进的分析:

  • CLR 线程池
  • 异步同步
  • 死锁检测

查看有关针对托管 Linux 内存转储运行分析的更多详细信息。

https://devblogs.microsoft.com/visualstudio/managed-memory-dump-analyzers/#automatic-analysis-of-a-memory-dump

总结

在我们的 Azure PaaS 产品中,我们继续投资于全面的诊断体验,以帮助您最大限度地提高对 Azure PaaS 的投资。我们很高兴为深度诊断工件开发了新的调试功能,这将帮助您分析全面而复杂的各项服务。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 汪宇杰博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
.NET周刊【5月第3期 2025-05-18】
https://www.cnblogs.com/eventhorizon/p/18873400
InCerry
2025/06/09
340
.NET周刊【5月第3期 2025-05-18】
.NET 中的工具和诊断
在本文中,您将了解 .NET 开发人员可用的各种工具。使用 .NET,您将拥有一个强大的软件开发工具包 (SDK),其中包括一个命令行界面 (CLI)。.NET CLI 支持 .NET 就绪集成开发环境 (IDE) 中的许多功能。本文还提供了生产力功能的资源,例如用于诊断性能问题、内存泄漏、高 CPU、死锁和代码分析工具支持的 .NET CLI 工具。 .NET SDK .NET SDK 包括 .NET 运行时和 .NET CLI。您可以下载适用于 Windows、Linux、macOS 或 Docker的.NET SDK。有关详细信息,请参阅.NET SDK 概述。 .NET 命令行界面 .NET CLI 是一个跨平台的工具链,用于开发、构建、运行和发布 .NET 应用程序。.NET CLI 包含在 .NET SDK 中。有关详细信息,请参阅.NET CLI 概述。 集成开发环境 您可以在Visual Studio Code、Visual Studio或Visual Studio for Mac 中编写 .NET 应用程序。 附加工具 除了比较常用的工具,.NET 还提供了针对特定场景的工具。一些用例包括卸载 .NET SDK 或 .NET 运行时、检索 Windows Communication Foundation (WCF) 元数据、生成代理源代码和序列化 XML。有关详细信息,请参阅.NET 附加工具概述。 诊断和仪表 作为 .NET 开发人员,您可以使用常见的性能诊断工具来监控应用性能、使用跟踪分析应用、收集性能指标以及分析转储文件。您使用事件计数器收集性能指标,并使用分析工具深入了解应用程序的性能。有关详细信息,请参阅.NET 诊断工具。 代码分析 .NET 编译器平台 (Roslyn) 分析器检查您的 C# 或 Visual Basic 代码是否存在代码质量和代码样式问题。有关详细信息,请参阅.NET 源代码分析概述。 包装验证 .NET SDK 允许库开发人员验证他们的包是否一致且格式良好。有关详细信息,请参阅.NET SDK 包验证。
呆呆
2022/01/04
6920
.NET 8正式发布
11 月 15 日开始的为期三天的 .NET Conf 在线活动的开幕日上,.NET 8作为微软的开源跨平台开发平台正式发布。.NET 团队着重强调云、性能、全栈 Blazor、AI 和 .NET MAUI 是.NET 8的主要亮点。。NET团队在 .NET Conf 2023 [1]活动开幕式上表示:“通过这个版本,.NET 重塑了我们构建按需扩展的智能、云原生应用程序和高流量服务的方式。 无论你是部署到 Linux 还是 Windows,使用容器还是你选择的云应用模型,.NET 8 都能更轻松地构建这些应用。”
JusterZhu
2023/11/17
7941
.NET 8正式发布
调试 .NET Core 中的内存泄漏
当应用引用不再需要执行所需任务的对象时,可能会发生内存泄漏。 引用上述对象会使垃圾回收器无法回收所使用的内存,这通常会导致性能降低,并可能最终引发 OutOfMemoryException。
呆呆
2022/01/09
1.9K0
创建.NET程序Dump的几种姿势
当一个应用程序运行的有问题时,生成一个 Dump 文件来调试它可能会很有用。在 Windows、Linux 或 Azure 上有许多方法可以生成转储文件。
InCerry
2022/11/14
1.1K0
译 | .NET Core 3.0 对诊断的改进
在 .NET Core 3.0 中,我们将引入一套工具,这些工具利用 .NET 运行时中的新功能,使诊断和解决性能问题变得更加容易。
Edi Wang
2019/07/09
1.7K0
使用dotnet-monitor sidecar模式 dump docker运行的dotnet程序.
随着容器和云技术的发展, 大量的应用运行在云上的容器中, 它们的好处是毋庸置疑的, 例如极大的提高了我们的研发部署速度, 快速的扩缩容等等, 但是也存在一些小小的问题, 例如难以调试. 基于VM的部署我们可以通过安全的方式登录到主机上做一些你想做的事情, 但是云上的容器那就是不太方便了(目前AWS的ECS已经有类似docker exec的方式直接进入容器中了, 其他的云未作了解). 但是就算能进入容器也不意味着调试就好做了, 通常来说使用的镜像都是经过优化和精简的(如果要调式可能需要安装大量的组件).
旺财的城堡
2022/11/02
1.3K0
使用dotnet-monitor sidecar模式 dump docker运行的dotnet程序.
.NET6系列:Visual Studio 2022 线路图
  在上一篇博客《Visual Studio 2022》中介绍了VS2022的性能改进与重要功能。本文主要介绍在 Visual Studio 2022 中针对2021年的主要工作。 Visual Studio 2022 有三个关键主题:
张传宁IT讲堂
2021/06/08
1.8K0
JVM-监控及诊断工具
ps(Java Process Status):显示指定系统内所有的HotSpot虚拟机进程(查看虚拟机进程信息),可用于查询正在运行的虚拟机进程。
才疏学浅的木子
2023/10/17
5960
JVM-监控及诊断工具
.NET周报 【5月第3期 2023-05-21】
https://www.cnblogs.com/shawshank/p/17390248.html
InCerry
2023/08/31
7700
.NET周报 【5月第3期 2023-05-21】
10个用于C#.NET开发的基本调试工具
在调试软件时,工具非常重要。获取正确的工具,然后再调试时提取正确的信息。根据获取的正确的错误信息,可以找到问题的根源所在。找到问题根源所在,你就能够解决该错误了。
李明成
2020/03/04
2.8K0
.NET周报【10月最后一期 2022-11-01】
精选要闻 .NET 7 NativeAOT 比.NET 单文件发布文件小 80% https://twitter.com/JamesNK/status/1584919726861737984?s=20
InCerry
2022/11/14
1.5K0
.NET Conf 2019 大会上发布.NET Core 3.0
北京时间今天凌晨如期在.NET Conf 上发布.NET Core 3.0,Keynotes 由Scott Hunter 主演,主要围绕.NET Core 3.0的新特性和社区展开。
梁规晓
2019/09/25
7010
.NET Conf 2019 大会上发布.NET Core 3.0
使用 ETW 对 .NET 应用程序进行性能诊断
下载代码示例 您编写一个托管应用程序来亲身体验一下 – 您会觉得其速度较慢。您的应用程序在功能上是正常的,但其性能有很多不足。您想诊断出性能问题并解决这些问题,但您的应用程序正在生产环境中运行,导致您无法安装探查器或中断它。或者,您应用程序的使用范围可能不够广泛,无法证明购买 Visual Studio 探查器来进行 CPU 分析是合理的。 幸运的是,Windows 事件跟踪 (ETW) 可以缓解这些问题。此强大的日志记录技术内置在 Windows 基础结构的多个部分中,并且 Microsoft .NET
张善友
2018/01/19
1.6K0
使用 ETW 对 .NET 应用程序进行性能诊断
技术速递|.NET 9简介
今天,我们非常激动地宣布 .NET 9的发布,这是迄今为止最高效、最现代、最安全、最智能、性能最高的 .NET 版本。这是来自世界各地数千名开发人员又一年努力的成果。这个新版本包括数千项性能、安全和功能方面的改进。您会发现在整个 .NET 堆栈(编程语言、开发者工具和工作负载)都有了全面的增强,这使您能够使用统一平台进行构建并轻松地将 AI 融入您的应用程序。
郑子铭
2024/12/06
3180
技术速递|.NET 9简介
在 Azure App Service 上运行 .NET 6 预览版
.NET 6 是最新的 .NET 版本,它最终将.NET Core,Framework,Xamarin和Mono的精华带入以 .NET 5 开始的统一平台。该版本目前为预览版,用于尝试激动人心的新功能,计划于2021年11月正式发布。.NET6 的最终版本将是长期支持(LTS)版,支持3年。在此处查看有关发行版的更多信息。
Edi Wang
2021/04/29
6420
在 Azure App Service 上运行 .NET 6 预览版
Visual Studio 2022 Preview 1 和.NET 6 Preview 5 正式发布
具有里程碑意义的Visual Studio 2022 Preview 1正式发布,重点是64位,而没有增加新功能,并且同时也发布了.NET 6 Preview 5。
张善友
2021/06/21
7790
Visual Studio 2022 Preview 1 和.NET 6 Preview 5 正式发布
.NET周刊【9月第4期 2023-09-24】
在编程的世界里看见数学的身影,会让我充满好奇和兴奋。这不,在一年一度介绍.NET新版本的官方开发博客《Performance Improvements in .NET 8》中,我看到了这样一个有趣的算法:可扩展近似计数(Scalable Approximate Counting)。
InCerry
2023/10/08
3840
.NET周刊【9月第4期 2023-09-24】
.NET 5.0正式发布,新功能特性(翻译)
  我们很高兴今天.NET5.0正式发布。这是一个重要的版本—其中也包括了C# 9和F# 5大量新特性和优秀的改进。微软和其他公司的团队已经在生产和性能测试环境中开始使用了。这些团队向我们反馈的结果比较令人满意,它证明了对性能提升及降低Web应用托管成本的机会有积极的表现。从预览版1开始,我们一直在5.0上运行我们自己的网站。从我们目前的所见所闻来看,.NET5.0无需在升级上花费太多的精力就能带来巨大的价值。对于你的下一个应用来说,这是一个很好的选择,而且可以直接从早期的.NET Core版本升级。我们希望您在台式机、笔记本电脑和云实例上正式开始使用它。
张传宁IT讲堂
2020/11/13
2.4K0
.NET 5.0正式发布,新功能特性(翻译)
【翻译】.NET Core3.1发布
我们很高兴宣布.NET Core 3.1的发布。实际上,这只是对我们两个多月前发布的.NET Core 3.0的一小部分修复和完善。最重要的是.NET Core 3.1是长期支持(LTS)版本,并且将支持三年。和过去一样,我们希望花一些时间来发布下一个LTS版本。额外的两个月(在.NET Core 3.0之后)使我们能够选择和实施在已经非常稳定的基础上进行的正确改进。
梁规晓
2019/12/17
1.7K0
相关推荐
.NET周刊【5月第3期 2025-05-18】
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档