5

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

 1 year ago
source link: https://www.cnblogs.com/InCerry/p/how-to-generate-a-dump-file-of-a-dotnet-application.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

Windows平台

dotnet-dump (Windows)

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

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

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

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

    dotnet-dump collect --process-id <ProcessId>
    

1667053182-8768f1486c623f275c25cf79d87ea847.png

Windows 任务管理器

  1. 按下 Ctrl+Shift+Esc 打开 Windows 任务管理器
  2. 选择"详细信息"选项卡
  3. 在列表中找到你的应用程序
  4. 右击它,然后选择 "创建转储文件"
    image-How-to-generate-a-dump-file-of-a-NET-application-221029231005218.png

image-How-to-generate-a-dump-file-of-a-NET-application-221029231043731.png

SysInternals - Process Explorer

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

1667053182-0b20a7cb40972f4e16d4d90bac3a8180.png

]

SysInternals - ProcDump (Windows)

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

  1. 下载 ProcDump: ProcDump

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

    procdump notepad
    
    procdump 4572
    

1667053182-5b50f50a03e3333f64171befacc3d98f.png

调试诊断工具

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

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

Visual Studio

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

image-How-to-generate-a-dump-file-of-a-NET-application-221029231508910.png

WinDbg

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

.dump /ma [path]

1667053182-f138f773a26611e727f881c8b2646ed9.png

Windows Error Reporting

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

Linux

dotnet-dump (Linux)

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

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

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

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

    dotnet-dump collect --type heap --process-id <ProcessId>
    

1667053182-d2ef977a0426d79efa0e0a0fb749276e.png

SysInternals - ProcDump (Linux)

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

  1. 下载 ProcDump for Linux: ProcDump For Linux

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

    procdump 4572
    

1667053182-daa4d7fb1c07571883b31a31c1450748.png

Azure App Services

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

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

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

  3. 选择 "诊断工具"

    1667053182-31ea8d41513894033a50eac4d49b78fa.png
  4. 选择 "收集内存转储"

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

  6. 几分钟后,转储在配置的存储账户中可用。

    1667053182-1c488ec0fa97a25a7646a903068fa5fc.png

原文版权:Meziantou
翻译版权:InCerry
原文链接:
https://www.meziantou.net/how-to-generate-a-dump-file-of-a-dotnet-application.htm


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK