크래시 및 멈춤 덤프

이러한 기능을 사용하려면 각 섹션에 설명된 대로 추가 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();

옵션

Option Description
--crashdump 테스트 호스트 프로세스가 충돌할 때 덤프 파일을 생성합니다. .NET 6.0 이상에서 지원됩니다.
--crashdump-filename 덤프의 파일 이름을 지정합니다.
--crashdump-type 덤프의 형식을 지정합니다. 유효한 값은 Mini, Heap, TriageFull입니다. 기본값은 Full입니다. 자세한 내용은 미니 덤프 형식을 참조하세요.
--crash-report [Linux/macOS만 해당] 테스트 프로세스가 충돌할 때 JSON 크래시 보고서를 생성합니다. --crashdump 함께 결합하여 덤프 파일도 생성합니다. --crashdump 함께 사용할 경우 .NET 7 이상 또는 .NET 6 이상이 필요합니다. .NET 런타임은 Windows 기본 DOTNET_EnableCrashReportDOTNET_EnableCrashReportOnly 환경 변수(dotnet/runtime#80191)를 무시하므로 Windows 지원되지 않습니다. 버전 2.3.0부터 MTP에서 사용할 수 있습니다.
--crash-report-if-supported 크래시 보고서 생성이 지원되지 않는 플랫폼에서는 --crash-report와 동일하지만, 정보 메시지와 함께 무시됩니다. 이 옵션을 사용하여 Windows 포함하는 CI 매트릭스 간에 동일한 명령줄을 유지합니다. --crash-report와 상호 배타적입니다. 버전 2.3.0부터 MTP에서 사용할 수 있습니다.
--crash-sequence 테스트 세션 중에 시작되고 종료된 테스트를 나열하는 시퀀스 파일이 크래시 덤프 또는 크래시 보고서와 함께 생성되는지 여부를 제어합니다. 이 파일을 사용하면 덤프를 검사하지 않고 크래시 당시 실행 중이던 테스트를 식별할 수 있습니다. 유효한 값은 on(기본값이며 true, enable1도 허용) 또는 off(false, disable0도 허용)입니다. 버전 2.3.0부터 MTP에서 사용할 수 있습니다.

주의

확장은 .NET Framework와 호환되지 않으며 자동으로 무시됩니다. .NET Framework 지원의 경우 Sysinternals ProcDump를 사용하여 사후 관리 디버깅을 사용하도록 설정합니다. 자세한 내용은 Windows Sysinternals ProcDump: 사후 디버깅 사용을 참조하세요. 또한 사후 관리 디버깅 솔루션은 .NET 대한 프로세스 크래시 정보를 수집하므로 .NET 및 .NET Framework 테스트 애플리케이션을 모두 대상으로 하는 경우 확장을 사용하지 않도록 할 수 있습니다.

덤프 중단

이 확장을 사용하면 지정된 시간 제한 후에 덤프 파일을 만들 수 있습니다. 이 확장에는 Microsoft.Testing.Extensions.HangDump NuGet 패키지가 필요합니다.

수동 등록

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

옵션

Option 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와 동일하지만, 현재 런타임에서 요청된 덤프 형식을 사용할 수 없는 경우 정보 메시지와 함께 지원되는 가장 가까운 덤프 형식으로 대체됩니다. 예를 들어 Triage .NET(Core)에서만 지원되며 .NET Framework에서 Mini로 대체됩니다. 이 옵션을 사용하여 .NET(Core) 및 .NET Framework를 혼합하는 CI 매트릭스 간에 동일한 명령줄을 유지합니다. 유효한 값은 Mini, Heap, FullTriageNone. --hangdump-type와 상호 배타적입니다. 버전 2.3.0부터 MTP에서 사용할 수 있습니다.