diff --git a/src/Platform/Microsoft.Testing.Extensions.HangDump/HangDumpCommandLineProvider.cs b/src/Platform/Microsoft.Testing.Extensions.HangDump/HangDumpCommandLineProvider.cs index 482bcc3a37..3efb46104e 100644 --- a/src/Platform/Microsoft.Testing.Extensions.HangDump/HangDumpCommandLineProvider.cs +++ b/src/Platform/Microsoft.Testing.Extensions.HangDump/HangDumpCommandLineProvider.cs @@ -17,9 +17,9 @@ internal sealed class HangDumpCommandLineProvider : ICommandLineOptionsProvider public const string HangDumpTypeOptionName = "hangdump-type"; #if NETCOREAPP - private static readonly string[] HangDumpTypeOptions = ["Mini", "Heap", "Full", "Triage"]; + private static readonly string[] HangDumpTypeOptions = ["Mini", "Heap", "Full", "Triage", "None"]; #else - private static readonly string[] HangDumpTypeOptions = ["Mini", "Heap", "Full"]; + private static readonly string[] HangDumpTypeOptions = ["Mini", "Heap", "Full", "None"]; #endif private static readonly IReadOnlyCollection CachedCommandLineOptions = diff --git a/src/Platform/Microsoft.Testing.Extensions.HangDump/HangDumpProcessLifetimeHandler.cs b/src/Platform/Microsoft.Testing.Extensions.HangDump/HangDumpProcessLifetimeHandler.cs index 7ea20a782e..d68ca6834f 100644 --- a/src/Platform/Microsoft.Testing.Extensions.HangDump/HangDumpProcessLifetimeHandler.cs +++ b/src/Platform/Microsoft.Testing.Extensions.HangDump/HangDumpProcessLifetimeHandler.cs @@ -354,12 +354,13 @@ private async Task TakeDumpAsync(IProcess process, CancellationToken cancellatio #if NETCOREAPP DiagnosticsClient diagnosticsClient = new(process.Id); - DumpType dumpType = _dumpType.ToLowerInvariant().Trim() switch + DumpType? dumpType = _dumpType.ToLowerInvariant().Trim() switch { "mini" => DumpType.Normal, "heap" => DumpType.WithHeap, "triage" => DumpType.Triage, "full" => DumpType.Full, + "none" => null, _ => throw ApplicationStateGuard.Unreachable(), }; @@ -372,7 +373,12 @@ private async Task TakeDumpAsync(IProcess process, CancellationToken cancellatio try { - diagnosticsClient.WriteDump(dumpType, finalDumpFileName, logDumpGeneration: false); + // Skip creating the dump if the option is set to none, and just kill the process. + if (dumpType.HasValue) + { + diagnosticsClient.WriteDump(dumpType.Value, finalDumpFileName, logDumpGeneration: false); + _dumpFiles.Add(finalDumpFileName); + } } catch (Exception e) { @@ -381,17 +387,23 @@ private async Task TakeDumpAsync(IProcess process, CancellationToken cancellatio } #else - MiniDumpWriteDump.MiniDumpTypeOption miniDumpTypeOption = _dumpType.ToLowerInvariant().Trim() switch + MiniDumpWriteDump.MiniDumpTypeOption? miniDumpTypeOption = _dumpType.ToLowerInvariant().Trim() switch { "mini" => MiniDumpWriteDump.MiniDumpTypeOption.Mini, "heap" => MiniDumpWriteDump.MiniDumpTypeOption.Heap, "full" => MiniDumpWriteDump.MiniDumpTypeOption.Full, + "none" => null, _ => throw ApplicationStateGuard.Unreachable(), }; try { - MiniDumpWriteDump.CollectDumpUsingMiniDumpWriteDump(process.Id, finalDumpFileName, miniDumpTypeOption); + // Skip creating the dump if the option is set to none, and just kill the process. + if (miniDumpTypeOption.HasValue) + { + MiniDumpWriteDump.CollectDumpUsingMiniDumpWriteDump(process.Id, finalDumpFileName, miniDumpTypeOption.Value); + _dumpFiles.Add(finalDumpFileName); + } } catch (Exception e) { @@ -399,8 +411,6 @@ private async Task TakeDumpAsync(IProcess process, CancellationToken cancellatio await _outputDisplay.DisplayAsync(new ErrorMessageOutputDeviceData(string.Format(CultureInfo.InvariantCulture, ExtensionResources.ErrorWhileDumpingProcess, process.Id, process.Name, e)), cancellationToken).ConfigureAwait(false); } #endif - - _dumpFiles.Add(finalDumpFileName); } private static void NotifyCrashDumpServiceIfEnabled() diff --git a/src/Platform/Microsoft.Testing.Extensions.HangDump/Resources/ExtensionResources.resx b/src/Platform/Microsoft.Testing.Extensions.HangDump/Resources/ExtensionResources.resx index 7b924858e4..0f16cef8cd 100644 --- a/src/Platform/Microsoft.Testing.Extensions.HangDump/Resources/ExtensionResources.resx +++ b/src/Platform/Microsoft.Testing.Extensions.HangDump/Resources/ExtensionResources.resx @@ -1,4 +1,4 @@ - +