本文适用于: ✔️ .NET Core 3.0 SDK 及更高版本 在 Linux 上收集转储 在 Linux 上收集转储的两种建议方法是: dotnet-dump CLI 工具 用于在故障时收集转储的环境变量...dotnet-gcdump 工具可用作仅捕获 GC 堆信息但生成可在 Windows 上分析的转储的替代方法。...使用 createdump 的核心转储 作为创建仅托管转储的 dotnet-dump 的替代方法,建议使用 createdump 这一工具在包含本机和托管信息的 Linux 上创建核心转储。...在 Linux 上分析转储 通过使用 dotnet-dump analyze 命令,可以借助 dotnet-dump 工具分析使用 dotnet-dump 收集的托管转储和使用 createdump 收集的核心转储...除非应用是独立应用,否则通常为 dotnet 二进制文件,在本例中,它是不包含 dll 扩展名的应用程序的名称。
现阶段的问题 现在是云原生和容器化时代,.NET Core对于云原生来说有非常好的兼容和亲和性,dotnet社区以及微软为.NET Core提供了非常方便的镜像容器化方案。...所以现在大多数的dotnet程序都是部署在各种容器化环境中,比如我们常见的Docker。 微软官方为.NET提供的许多Docker镜像,让我们可以很方便的创建容器化的.NET应用。...而且在没有安装.NET SDK的情况下,我们也无法安装dotnet tool。..."$PATH:/root/.dotnet/tools" 当然我们可以打包一个包含好工具的runtime,供后面使用,就不用每次都安装tool了。...常用的工具 因为公司是自建机房,所以对于存储和网络带宽都比较宽裕,我们一般会在生产环境运行的镜像中安装下面这些工具。
.NET 卸载工具 使用 .NET 卸载工具 (dotnet-core-uninstall),可清理系统上的 .NET SDK 和运行时,以便仅保留指定的版本。 可使用选项集合来指定要卸载的版本。....NET 诊断工具 dotnet-counters 是一个性能监视工具,用于初级运行状况监视和性能调查。...通过 dotnet-dump,可在不使用本机调试器的情况下收集和分析 Windows 和 Linux 核心转储。...dotnet-gcdump 提供为活动 .NET 进程收集 GC(垃圾回收器)转储的方式。 dotnet-trace 会从你的应用收集分析数据,这些数据可帮助你了解应用运行速度缓慢的原因。...WCF dotnet-svcutil.xmlserializer 工具在 .NET 5(和 .NET Core)以及更高版本上提供类似的功能。
当一个应用程序运行的有问题时,生成一个 Dump 文件来调试它可能会很有用。在 Windows、Linux 或 Azure 上有许多方法可以生成转储文件。...Windows 平台 dotnet-dump (Windows) dotnet-dump 全局工具[1]是一种收集和分析.NET 核心应用程序 Dump 的方法。.../ma选项允许为所有连接的进程生成一个 minidump: .dump /ma [path] Windows Error Reporting Windows 错误报告允许在应用程序崩溃时生成一个转储文件...Linux dotnet-dump (Linux) dotnet-dump 全局工具[7]是一种收集和分析.NET 核心应用程序转储的方法。...ProcDump (Linux) ProcDump 是一个命令行工具,当应用程序冻结或使用太多的 CPU 时,可以生成一个 Dump 文件。
转储是一种文件,其中包含创建进程时该进程的快照,可用于检查应用程序的状态。 当很难将调试程序附加到 .NET 应用程序(如生产或 CI 环境)时,可使用转储来调试该应用程序。...备注 转储可能包含敏感信息,因为它们可以包含正在运行进程的全部内存。 处理它们时请考虑所有安全限制和指导。 在发生故障时收集转储 可以使用环境变量将应用程序配置为在发生故障时收集转储。...0 备注 .NET 6 为用于配置 .NET 运行时行为的环境变量标准化前缀 DOTNET_ 而不是 COMPlus_。 但是,COMPlus_ 前缀仍将继续正常工作。...备注 Visual Studio 16.8 及更高版本允许打开在 .NET Core 3.1.7 或更高版本上生成的 Linux 转储。...调试 Linux 转储这一教程分步演示了如何调试在 Linux 中收集的转储。 调试死锁这一教程分步演示了如何使用转储来调试 .NET 应用程序中的死锁。
在非 Windows 平台(如 Linux 或 macOS)上,该端口可使用 Unix 域套接字实现。...功能 EventPipe ETW LTTng 跨平台 是 否(仅在 Windows 上) 否(仅在受支持的 Linux 发行版上) 需要管理员/根用户权限 否 是 是 可获取 OS/内核事件 否 是 是...dotnet-counters 使你能够监视和收集由 .NET 运行时和核心库发出的各种指标,以及可以编写的自定义指标。...dotnet-gcdump 使你能够收集实时进程的 GC 堆转储以分析应用程序的托管堆。 dotnet-trace 使你能够收集应用程序的跟踪以进行性能分析。...备注 自 .NET 6 起,DOTNET_EventPipeOutputPath 中的 {pid} 字符串实例将替换为所跟踪的进程的进程 ID。
在 .NET Core中,这些跟踪写入了 Windows 上的 ETW 和 Linux 上的 LTTng。...dotnet-trace 在 3.0-preview5 中,每个 .NET Core 应用程序都会打开一个名为 EventPipe 的双工管道(Windows 上的Unix域套接字*nix/named管道...除了默认事件之外,还可以根据尝试执行的调查启用其他提供程序。 因为运行了 dotnet-trace,您会得到一个 .netperf 文件。此文件包含运行时事件和可按视图可视化的采样 CPU 堆栈。...dotnet-dump 3.0.0-preview5中,我们引入了一个新的工具,允许您捕获和分析 Windows 和 Linux 上的进程转储。...安装 dotnet-dump后,可以通过运行以下命令来捕获进程转储: sudo $HOME/.dotnet/tools/dotnet-dump collect -p 在 Linux 上,可以通过运行以下命令加载生成的转储来分析生成的转储
查看从 dotnet-gcdump 捕获的 GC 转储 在 Windows 上,可以在 PerfView 中查看 .gcdump 文件,以便进行分析,也可在 Visual Studio 中查看该文件。...备注 在 Linux 和 macOS 上,此命令需要目标应用程序和 dotnet-gcdump 使用同一 TMPDIR 环境变量。 否则,该命令将超时。...备注 若要使用 dotnet-gcdump 收集 GC 转储,需要以与运行目标进程的用户相同的用户身份或以根身份运行。 否则,该工具将无法与目标进程建立连接。...在 .NET Core 3.1 之前,存在一个问题,即使用 EventPipe 调用 gcdump 时,gcdump 之间的类型缓存没有清除。...在 .NET Core 3.1-preview2 之前,存在一个问题,即通过 EventPipe 调用 GC 转储时,不会发送静态和 COM 类型。
如果所在的操作系统是 Windows,则可以使用 Visual Studio 的内存诊断工具调试内存泄漏。 本教程使用一个示例应用程序,它设计为有意泄漏内存。 本示例作为练习提供。...常见的诊断数据源是 Windows 上的内存转储或 Linux 上的等效核心转储。 若要生成 .NET Core 应用程序转储,可使用 dotnet-dump 工具。...使用之前启动的示例调试目标,运行以下命令以生成 Linux 核心转储: dotnet-dump collect -p 4807 结果是位于同一文件夹中的核心转储。...如果失败的进程在生产服务器上运行,现在是通过重新启动进程进行短期修正的理想时机。 在本教程中,你已经完成了示例调试目标,现在可以将其关闭。 导航到启动服务器的终端并按 Ctrl+C。...有关详细信息,请参阅 Linux 上 .NET Core 的先决条件。 此时会显示一个提示,可在其中输入 SOS 命令。
Microsoft.Diagnostics.NETCore.Client(也称为诊断客户端库)是一种托管库,该库支持你与 .NET Core 运行时 (CoreCLR) 交互,以实现各种与诊断相关的任务...此库是 dotnet-counters、dotnet-trace、dotnet-gcdump 和 dotnet-dump 等许多诊断工具背后的支持库。...附加到进程并打印出所有 GC 事件 此代码片段演示了如何在信息级别使用带有 GC 关键字的 .NET 运行时提供程序启动 EventPipe 会话。...此示例演示了如何监视 .NET 运行时发布的 cpu-usage 计数器,并在 CPU 使用率超出特定阈值时请求转储。...本质上讲,这就是 dotnet-trace 在内部用于编写跟踪文件的内容。
本文适用于: ✔️ .NET Core 2.1 SDK 及更高版本 安装 可采用两种方法来下载和安装 dotnet-sos: dotnet 全局工具: 若要安装最新版 dotnet-sos NuGet...借助此扩展,你可以从本机调试器(如 lldb 和 windbg)检查托管 .NET Core 状态。 备注 只有 Linux 或 macOS 需要通过 dotnet-sos 工具安装 SOS。...安装 dotnet-sos 在本地安装用于调试 .NET Core 进程的 SOS 扩展。...在 macOS 和 Linux 上,将更新 .lldbinit 文件,以便扩展在 lldb 启动时自动加载。...如果要使用较旧的调试工具(低于版本 10.0.18317.1001)在 Windows 上安装 SOS,则需要通过在调试程序中运行 .load %USERPROFILE%\.dotnet\sos\sos.dll
为我们开发人员提供了一系列功能强大并且无侵入的诊断工具,本文主要介绍的是 .NET Core dotnet 诊断全局工具 先决条件 支持.NET Core 3.0 SDK 及更高版本, .NET Core...命令行接口 (CLI) 工具 dotnet-counters dotnet-counters 是一个性能监视工具,用于临时运行状况监视和初级性能调查, 你可以通过命令查看和存储,当前程序的运行时信息,...,并将它们导出为指定的文件格式以进行后续处理。...dotnet-trace dotnet-trace 是一个跨平台的 .NET Core 工具,在不使用本机探查器的情况下启用正在运行的进程的 .NET Core 跟踪集合, 它是围绕 .NET Core...运行时的跨平台 EventPipe 技术而构建的,在 Windows、Linux 或 macOS 上提供相同体验。
备注 在 .NET 5 及更高版本上,调用栈将输出到控制台。 备注 本文介绍如何使用 lldb 调试堆栈溢出。...示例 运行配置为在发生故障时收集转储的应用 > export DOTNET_DbgEnableMiniDump=1 > dotnet run Stack overflow....6 为用于配置 .NET 运行时行为的环境变量标准化前缀 DOTNET_ 而不是 COMPlus_。...如果使用的是早期版本的 .NET 运行时,则环境变量仍应该使用 COMPlus_ 前缀。...如果仍不清楚,则可以在该代码区域中添加日志记录。 另请参阅 .NET 中的转储简介 调试 Linux 转储 适用于 .NET 的 SOS 调试扩展
[-h, --help] [--version] 描述 dotnet-stack 工具: 是一个跨平台的 .NET Core 工具。...为目标 .NET 进程中的所有线程捕获和打印托管堆栈。 利用 .NET Core 运行时提供的 EventPipe 跟踪。 选项 -h|--help 显示命令行帮助。...例如,在 Windows 上,可以使用任务管理器或 tasklist 命令。 在 Linux 上,使用 ps 命令。...每个线程都有一个标头,其中包含本机线程 ID:Thread ():。 堆栈帧遵循格式 Module!Method。...Method 后续步骤 使用 dotnet-trace 收集 .NET 应用程序的 CPU 示例 使用 dotnet-dump 收集 .NET 应用程序的转储
这意味着开发者在 Loongnix 上编译的.NET 应用程序,可能无法在安装了最新 Arch Linux 或 Debian 的 LoongArch 机器上运行,反之亦然 。...调试工具缺失:官方的诊断工具(如 dotnet-sos, dotnet-dump)往往依赖于特定的原生库构建。...4.1 托管应用部署(Managed Deployment) 对于标准的.NET 应用程序(依赖 JIT),部署的核心在于获取正确的运行时包。...然而,在 RISC-V 和 LoongArch 上启用 Native AOT 面临严峻的工具链挑战。 核心挑战:链接器与 ObjCopy .NET SDK 默认假定使用宿主机的工具链。...核心运行时已能在这两个架构上稳定运行,Native AOT 更是为其在嵌入式领域的应用打开了广阔大门。dotnet/runtime 仓库中活跃的提交记录证明了这一点。
为我们开发人员提供了一系列功能强大并且无侵入的诊断工具,本文主要介绍的是 .NET Core dotnet 诊断全局工具 先决条件 支持.NET Core 3.0 SDK 及更高版本, .NET Core...命令行接口 (CLI) 工具 dotnet-counters dotnet-counters 是一个性能监视工具,用于临时运行状况监视和初级性能调查, 你可以通过命令查看和存储,当前程序的运行时信息,....dmp 输入 help 可以查看所有的命令,这里我想获取托管代码的堆栈信息,输入 clrstack dotnet-trace dotnet-trace 是一个跨平台的 .NET Core 工具,在不使用本机探查器的情况下启用正在运行的进程的....NET Core 跟踪集合, 它是围绕 .NET Core 运行时的跨平台 EventPipe 技术而构建的,在 Windows、Linux 或 macOS 上提供相同体验。...Core 开发的轻量级APM系统, 基于MIT开源协议,主要支持了统计,分析,告警,链路监控,请求日志等, 文档齐全,前段时间也是很荣幸的加入到了 .NET Core Community 组织,目前在准备
前情概要随着容器和云技术的发展, 大量的应用运行在云上的容器中, 它们的好处是毋庸置疑的, 例如极大的提高了我们的研发部署速度, 快速的扩缩容等等, 但是也存在一些小小的问题, 例如难以调试.....NET 应用程序会使收集诊断工件(例如,日志、跟踪、进程转储)具有挑战性。...dotnet monitor是一个工具,它提供了一种统一的方式来收集这些诊断工件,无论您是在台式机上运行还是在 kubernetes 集群中运行。...dotnet-monitor 可以连接到dotnet运行时公开的一个诊断端口(diagnostic port)(3.0新提供的新功能), 并通过自定义协议(ipc protocol)与运行时交互, 更多调试知识和工具例如...| 6.3 |在之后的对内存文件的分析可以使用dotnet-dump, lldb等程序.