崩潰與懸浮傾倒

這些功能需要安裝額外的 NuGet 套件,如同各節所述。

小提示

使用 Microsoft.Testing.Platform.MSBuild (由 MSTest、NUnit 和 xUnit 測試框架間接包含)時,這些擴充套件會在安裝 NuGet 套件時自動註冊,不需要改動程式碼。 本文所規定的手動註冊僅在你透過設定 <GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>關閉自動產生的入口點時才需要。

系統崩潰資料轉儲

此擴充功能可讓您在程序當機時建立當機傾印檔案。 此擴充套件需要 Microsoft.Testing.Extensions.CrashDump NuGet 套件。

手動註冊

var builder = await TestApplication.CreateBuilderAsync(args);
builder.TestHostControllers.AddCrashDumpProvider();

選項

選項 Description
--crashdump 當測試主機進程崩潰時產生轉儲檔案。 支援於 .NET 6.0+ 版本。
--crashdump-filename 指定轉存的檔名。
--crashdump-type 指定轉儲的類型。 有效值為Mini、Heap、Triage 和Full。 預設為 Full。 如需詳細資訊,請參閱小型轉儲的類型。
--crash-report [僅限 Linux/macOS]當測試程序當機時,會產生一份 JSON 崩潰報告。 與 --crashdump 搭配使用,也可產生轉儲檔。 單獨使用時需.NET 7+,與--crashdump合用時需.NET 6+。 Windows 不支援,因為 .NET 執行時忽略了底層的 DOTNET_EnableCrashReport 和 DOTNET_EnableCrashReportOnly 環境變數 Windows(dotnet/runtime#80191)。 從 2.3.0 版本起,已支援 MTP。
--crash-report-if-supported 與 --crash-report 相同,但在不支援產生崩潰報告的平台上會被忽略,並顯示提示訊息。 使用此選項在包含 Windows 的 CI 矩陣間保持相同的命令列。 與 --crash-report互斥。 從 2.3.0 版本起,已支援 MTP。
--crash-sequence 控制是否產生序列檔,列出在測試工作階段期間開始和結束的測試,並與當機傾印或當機報告一併產生。 此檔案可讓您無須檢視傾印檔,即可識別當機時正在執行的測試。 有效的值為 on (預設;也接受 true、 enable、 1和 )或 off (同樣接受 false、 disable、 0和 )。 從 2.3.0 版本起,已支援 MTP。

謹慎

該擴充功能不相容於 .NET 框架,會被靜默忽略。 支援 .NET Framework 時,你可以用 Sysinternals ProcDump 啟用事後除錯。 如需詳細資訊,請參閱 啟用事後偵錯:Window Sysinternals ProcDump。 事後除錯解決方案也會收集 .NET 的程序當機資訊,因此如果你同時針對 .NET 和 .NET Framework 測試應用程式,可以避免使用該擴充功能。

暫停記憶體傾印

此擴充功能可讓您在超時後建立轉儲檔案。 此擴充套件需要 Microsoft.Testing.Extensions.HangDump NuGet 套件。

手動註冊

var builder = await TestApplication.CreateBuilderAsync(args);
builder.TestHostControllers.AddHangDumpProvider();

選項

選項 Description
--hangdump 產生傾印檔案,以應對測試主機程序停止回應。
--hangdump-filename 指定轉存的檔名。 支援以下佔位符: {pname} (測試應用程式名稱)、 {pid} (程序 ID)、 {asm} (條目組合名稱)、 {tfm} (目標框架名稱)及 {time} (時間戳記)。 同時也支援舊有 %p 憑證(程序 ID)以實現向下相容性。
--hangdump-timeout 指定在無活動期間產生廢料的持續時間。 逾時值以以下其中一種格式指定:
1.5h、1.5hour、1.5hours
90m、90min、90minute、90minutes
5400s、5400sec、5400second、5400seconds
500ms、500mil、500millisecond、500milliseconds
1d、 1day、 1days。 裸數字(無後綴)會被解釋為毫秒。 預設為 30m(30 分鐘)。
--hangdump-type 指定轉儲的類型。 有效的數值包括 Mini、Heap、Full、Triage(.NET Framework 無法提供)以及 None。 預設為 Full。 如需詳細資訊,請參閱小型轉儲的類型。 None此數值自 2.1.0 版本起可在 MTP 中使用。
--hangdump-type-if-supported 與 類似 --hangdump-type ,但當請求的 dump 類型在當前執行時無法使用時,會回退到最接近的支援型別,並附上資訊訊息。 例如,Triage 僅支援於 .NET(核心版),並在 .NET Framework 上退回到 Mini。 使用這個選項,可以在混合使用 .NET(Core)和 .NET Framework 的 CI 矩陣間保持相同的命令列。 有效值為 Mini、Heap、Full、Triage 和 None。 與 --hangdump-type互斥。 從 2.3.0 版本起,已支援 MTP。