创建.NET程序Dump的几种姿势

当一个应用程序运行的有问题时,生成一个 Dump 文件来调试它可能会很有用。在 Windows、Linux 或 Azure 上有许多方法可以生成转储文件。

Windows 平台

dotnet-dump (Windows)

dotnet-dump 全局工具[1]是一种收集和分析.NET 核心应用程序 Dump 的方法。.

  1. 安装 dotnet-dump (必须要 .NET SDK) 或者 直接下载[2]

    dotnet tool install --global dotnet-dump
    
  2. 使用ps命令找到进程 Id

    dotnet-dump ps
    
  3. 通过指定的进程 id 创建 dump 文件

    dotnet-dump collect --process-id <ProcessId>
    
创建.NET程序Dump的几种姿势

Windows 任务管理器

  1. 按下 Ctrl+Shift+Esc 打开 Windows 任务管理器
  2. 选择"详细信息"选项卡
  3. 在列表中找到你的应用程序
  4. 右击它,然后选择 "创建转储文件"创建.NET程序Dump的几种姿势
创建.NET程序Dump的几种姿势

SysInternals - Process Explorer

  1. 下载 Process Explorer: Process Explorer[3]
  2. 打开 Process Explorer
  3. 右击进程选择 "Create Dump" 项

创建.NET程序Dump的几种姿势]

SysInternals - ProcDump (Windows)

ProcDump是一个命令行工具,当应用程序假死或进程使用太多的 CPU 时,可以生成一个 Dump 文件。

  1. 下载 ProcDump: ProcDump[4]

  2. 使用进程名或者进程 Id 创建 dump

    procdump notepad
    
    procdump 4572
    
创建.NET程序Dump的几种姿势

调试诊断工具

调试诊断工具允许在满足某个条件时生成一个转储文件。例如,当应用程序崩溃或 CPU 使用率高时,它可以生成一个 Dump 文件。

  1. 下载 Debug Diagnostic Tool v2 Update 3[5]
  2. 点击 "DebugDiag 2 Collection" (在开始菜单中可用)
  3. 配置一个规则,比如说当应用程序崩溃的时候
  4. 当条件得到满足时,会在配置的文件夹中生成一个崩溃 Dump。

Visual Studio

如果你正在调试一个应用程序,你可以直接从 Visual Studio 保存一个转储文件。打开 "调试 "菜单,点击 "将转储另存为... "菜单项。

创建.NET程序Dump的几种姿势

WinDbg

如果你正在使用 WinDbg 调试一个应用程序,你可以使用.dump命令来生成一个转储文件。/ma选项允许为所有连接的进程生成一个 minidump:

.dump /ma [path]
创建.NET程序Dump的几种姿势

Windows Error Reporting

Windows 错误报告允许在应用程序崩溃时生成一个转储文件。你可以查看我以前关于它的帖子。出错时自动创建崩溃转储文件[6] "Tip: 在出错时自动创建一个崩溃转储文件"。

Linux

dotnet-dump (Linux)

dotnet-dump 全局工具[7]是一种收集和分析.NET 核心应用程序转储的方法。

  1. 安装 dotnet-dump (必须 .NET SDK) 或者 下载它[8]

    dotnet tool install -g dotnet-dump
    
  2. 使用下面的命令找到进程 Id

    dotnet-dump ps
    
  3. 通过指定的进程 id 创建 dump 文件

    dotnet-dump collect --type heap --process-id <ProcessId>
    
创建.NET程序Dump的几种姿势

SysInternals - ProcDump (Linux)

ProcDump 是一个命令行工具,当应用程序冻结或使用太多的 CPU 时,可以生成一个 Dump 文件。

  1. 下载 ProcDump for Linux: ProcDump For Linux[9]

  2. 使用进程名或者进程 Id 创建 dump

    procdump 4572
    
创建.NET程序Dump的几种姿势

Azure App Services

Azure 允许我们为 App 服务生成和分析 Dump 文件。

  1. 选择你的应用程序服务

  2. 转到 "诊断和解决问题"

  3. 选择 "诊断工具"

    创建.NET程序Dump的几种姿势
  4. 选择 "收集内存转储"

  5. 点击 "收集内存转储 "按钮

  6. 几分钟后,转储在配置的存储账户中可用。创建.NET程序Dump的几种姿势

版权

原文版权:Meziantou

翻译版权:InCerry

原文链接: https://www.meziantou.net/how-to-generate-a-dump-file-of-a-dotnet-application.htm