在毀損時收集傾印
設定您的應用程式以在損毀時收集傾印,具體方法是設定特定的環境變數。 當您想要了解損毀發生的原因時,這會很有幫助。 例如,擲回例外狀況時擷取傾印可協助您檢查應用程式損毀時的狀態,以便識別問題。
下表顯示您可以設定以在損毀時收集傾印的環境變數。
環境變數 | 描述 | 預設值 |
---|---|---|
COMPlus_DbgEnableMiniDump 或 DOTNET_DbgEnableMiniDump |
如果設定為 1,將啟用核心傾印產生。 | 0 |
COMPlus_DbgMiniDumpType 或 DOTNET_DbgMiniDumpType |
要收集的傾印類型。 如需詳細資訊,請參閱迷你傾印的類型。 | 2 (Heap ) |
COMPlus_DbgMiniDumpName 或 DOTNET_DbgMiniDumpName |
要寫入傾印的檔案路徑。 確定執行 dotnet 程序的使用者具有指定目錄的寫入權限。 | /tmp/coredump.<pid> |
COMPlus_CreateDumpDiagnostics 或 DOTNET_CreateDumpDiagnostics |
如果設定為 1,將啟用傾印程式的診斷記錄。 | 0 |
COMPlus_EnableCrashReport 或 DOTNET_EnableCrashReport |
(需要 .NET 6 或更新版本;Windows 不支援。) 如果設定為 1,執行階段會產生 JSON 格式的損毀報告,其中包含損毀應用程式執行緒和堆疊框架的相關資訊。 損毀報告名稱是附加 .crashreport.json 的傾印路徑或名稱。 |
|
COMPlus_CreateDumpVerboseDiagnostics 或 DOTNET_CreateDumpVerboseDiagnostics |
(需要 .NET 7 或更新版本。) 如果設定為 1,將啟用傾印程式的詳細診斷記錄。 |
0 |
COMPlus_CreateDumpLogToFile 或 DOTNET_CreateDumpLogToFile |
(需要 .NET 7 或更新版本。) 寫入診斷訊息的檔案路徑。 |
如果未設定,診斷訊息會寫入至損毀應用程式的主控台。 |
注意
針對這些環境變數,.NET 7 會在前置詞 DOTNET_
上標準化,而不是 COMPlus_
。 不過,COMPlus_
前置詞將繼續運作。 如果使用舊版的 .NET 執行階段,則您仍應對環境變數使用 COMPlus_
前置詞。
檔案路徑範本
從 .NET 5 開始,DOTNET_DbgMiniDumpName
也可以包含動態填入的格式化範本規範:
規範 | 值 |
---|---|
%% | 單一 % 字元 |
%p | 傾印程序的 PID |
%e | 程序可執行檔名稱 |
%h | gethostname() 傳回的主機名稱 |
%t | 傾印的時間,以從 Epoch 起算的秒數表示 (Epoch 為 1970-01-01 00:00:00 +0000 (UTC)) |
迷你傾印的類型
下表顯示您可以為 DOTNET_DbgMiniDumpType
指定的所有值。 例如,將 DOTNET_DbgMiniDumpType
設為 1 表示會在損毀時收集 Mini
類型傾印。
值 | 名稱 | 描述 |
---|---|---|
1 | Mini |
小型傾印,包含模組清單、執行緒清單、例外狀況資訊和所有堆疊。 |
2 | Heap |
大型且相對完整的傾印,包含模組清單、執行緒清單、所有堆疊、例外狀況資訊、處理資訊,以及除了對應映像之外所有記憶體。 |
3 | Triage |
等同於 Mini ,但會移除個人資訊,例如路徑和密碼。 |
4 | Full |
最大的傾印,包含模組映像在內的所有記憶體。 |
單一檔案和原生 AOT 應用程式模型僅支援完整傾印。