當一個應用程序運行的有問題時,生成一個 Dump 文件來調試它可能會很有用。在 Windows、Linux 或 Azure 上有許多方法可以生成轉儲文件。
Windows 平臺
dotnet-dump (Windows)
dotnet-dump 全局工具[1]是一種收集和分析.NET 核心應用程序 Dump 的方法。
安裝
dotnet-dump
(必須要 .NET SDK) 或者 直接下載[2]dotnet tool install --global dotnet-dump
使用
ps
命令找到進程 Iddotnet-dump ps
通過指定的進程 id 創建 dump 文件
dotnet-dump collect --process-id <ProcessId>

Windows 任務管理器
按下
Ctrl+Shift+Esc
打開 Windows 任務管理器選擇"詳細信息"選項卡
在列表中找到你的應用程序
右擊它,然后選擇 "創建轉儲文件"

SysInternals - Process Explorer
下載 Process Explorer: Process Explorer[3]
打開 Process Explorer
右擊進程選擇 "Create Dump" 項
]
SysInternals - ProcDump (Windows)
ProcDump
是一個命令行工具,當應用程序假死或進程使用太多的 CPU 時,可以生成一個 Dump 文件。
下載 ProcDump: ProcDump[4]
使用進程名或者進程 Id 創建 dump
procdump notepad
procdump 4572

調試診斷工具
調試診斷工具允許在滿足某個條件時生成一個轉儲文件。例如,當應用程序崩潰或 CPU 使用率高時,它可以生成一個 Dump 文件。
下載 Debug Diagnostic Tool v2 Update 3[5]
點擊 "DebugDiag 2 Collection" (在開始菜單中可用)
配置一個規則,比如說當應用程序崩潰的時候
當條件得到滿足時,會在配置的文件夾中生成一個崩潰 Dump。
Visual Studio
如果你正在調試一個應用程序,你可以直接從 Visual Studio 保存一個轉儲文件。打開 "調試 "菜單,點擊 "將轉儲另存為... "菜單項。

WinDbg
如果你正在使用 WinDbg 調試一個應用程序,你可以使用.dump
命令來生成一個轉儲文件。/ma
選項允許為所有連接的進程生成一個 minidump:
.dump /ma [path]

Windows Error Reporting
Windows 錯誤報告允許在應用程序崩潰時生成一個轉儲文件。你可以查看我以前關于它的帖子。出錯時自動創建崩潰轉儲文件[6] "Tip: 在出錯時自動創建一個崩潰轉儲文件"。
Linux
dotnet-dump (Linux)
dotnet-dump 全局工具[7]是一種收集和分析.NET 核心應用程序轉儲的方法。
安裝
dotnet-dump
(必須 .NET SDK) 或者 下載它[8]dotnet?tool?install?-g?dotnet-dump
使用下面的命令找到進程 Id
dotnet-dump?ps
通過指定的進程 id 創建 dump 文件
dotnet-dump?collect?--type?heap?--process-id?<ProcessId>

SysInternals - ProcDump (Linux)
ProcDump 是一個命令行工具,當應用程序凍結或使用太多的 CPU 時,可以生成一個 Dump 文件。
下載 ProcDump for Linux: ProcDump For Linux[9]
使用進程名或者進程 Id 創建 dump
procdump 4572

Azure App Services
Azure 允許我們為 App 服務生成和分析 Dump 文件。
選擇你的應用程序服務
轉到 "診斷和解決問題"
選擇 "診斷工具"
選擇 "收集內存轉儲"
點擊 "收集內存轉儲 "按鈕
幾分鐘后,轉儲在配置的存儲賬戶中可用。
版權
原文版權:Meziantou
翻譯版權:InCerry
原文鏈接: https://www.meziantou.net/how-to-generate-a-dump-file-of-a-dotnet-application.htm
參考資料
[1]
dotnet-dump全局工具: https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-dump?WT.mc_id=DT-MVP-5003978
[2]直接下載: https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-dump?WT.mc_id=DT-MVP-5003978#install
[3]Process Explorer: https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer?WT.mc_id=DT-MVP-5003978
[4]ProcDump: https://learn.microsoft.com/en-us/sysinternals/downloads/procdump?WT.mc_id=DT-MVP-5003978
[5]Debug Diagnostic Tool v2 Update 3: https://www.microsoft.com/en-us/download/details.aspx?id=58210
[6]出錯時自動創建崩潰轉儲文件: https://www.meziantou.net/tip-automatically-create-a-crash-dump-file-on-error.htm
[7]dotnet-dump全局工具: https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-dump?WT.mc_id=DT-MVP-5003978
[8]下載它: https://learn.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-dump?WT.mc_id=DT-MVP-5003978#install
[9]ProcDump For Linux: https://github.com/microsoft/ProcDump-for-Linux/blob/master/INSTALL.md