-
Notifications
You must be signed in to change notification settings - Fork 377
Add enable crash report flag to WriteDump client API #2715
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
// Licensed to the .NET Foundation under one or more agreements. | ||
// The .NET Foundation licenses this file to you under the MIT license. | ||
// See the LICENSE file in the project root for more information. | ||
|
||
namespace Microsoft.Diagnostics.NETCore.Client | ||
{ | ||
public enum WriteDumpFlags | ||
{ | ||
None = 0x00, | ||
LoggingEnabled = 0x01, | ||
VerboseLoggingEnabled = 0x02, | ||
CrashReportEnabled = 0x04 | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -34,7 +34,7 @@ public Dumper() | |
{ | ||
} | ||
|
||
public int Collect(IConsole console, int processId, string output, bool diag, DumpTypeOption type, string name) | ||
public int Collect(IConsole console, int processId, string output, bool diag, bool crashreport, DumpTypeOption type, string name) | ||
{ | ||
Console.WriteLine(name); | ||
if (name != null) | ||
|
@@ -86,6 +86,12 @@ public int Collect(IConsole console, int processId, string output, bool diag, Du | |
|
||
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) | ||
{ | ||
if (crashreport) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. How is this not supported on Windows? I thought crash reports were possible on Windows. I seen many programs use such a thing before there too. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The crash report referenced here is a special json file that the Linux and MacOS tool createdump tool generates. The Windows "createdump" just calls the OS's MiniDumpWriteDump to generate dump and doesn't have a way to generate this json file. On Linux and MacOS createdump explicitly gathers the runtime process's state and writes both the core dump and the crash report json from that data. |
||
{ | ||
Console.WriteLine("Crash reports not supported on Windows."); | ||
return 0; | ||
} | ||
|
||
// Get the process | ||
Process process = Process.GetProcessById(processId); | ||
|
||
|
@@ -112,8 +118,17 @@ public int Collect(IConsole console, int processId, string output, bool diag, Du | |
break; | ||
} | ||
|
||
WriteDumpFlags flags = WriteDumpFlags.None; | ||
if (diag) | ||
{ | ||
flags |= WriteDumpFlags.LoggingEnabled; | ||
} | ||
if (crashreport) | ||
{ | ||
flags |= WriteDumpFlags.CrashReportEnabled; | ||
} | ||
// Send the command to the runtime to initiate the core dump | ||
client.WriteDump(dumpType, output, diag); | ||
client.WriteDump(dumpType, output, flags); | ||
} | ||
} | ||
catch (Exception ex) when | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -32,9 +32,9 @@ private static Command CollectCommand() => | |
new Command( name: "collect", description: "Capture dumps from a process") | ||
{ | ||
// Handler | ||
CommandHandler.Create<IConsole, int, string, bool, Dumper.DumpTypeOption, string>(new Dumper().Collect), | ||
CommandHandler.Create<IConsole, int, string, bool, bool, Dumper.DumpTypeOption, string>(new Dumper().Collect), | ||
// Options | ||
ProcessIdOption(), OutputOption(), DiagnosticLoggingOption(), TypeOption(), ProcessNameOption() | ||
ProcessIdOption(), OutputOption(), DiagnosticLoggingOption(), CrashReportOption(), TypeOption(), ProcessNameOption() | ||
}; | ||
|
||
private static Option ProcessIdOption() => | ||
|
@@ -70,6 +70,14 @@ private static Option DiagnosticLoggingOption() => | |
Argument = new Argument<bool>(name: "diag") | ||
}; | ||
|
||
private static Option CrashReportOption() => | ||
new Option( | ||
alias: "--crashreport", | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is there an issue filed or PR open to add the docs for this new feature to docs.microsoft.com? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Doc issue: #2717 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That issue covers the APIs, but doesn't mention dotnet-dump the tool and the new argument being added here. Can you either expand the scope of the issue or add a new one? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I added a comment about the new option to the doc issue. |
||
description: "Enable crash report generation.") | ||
{ | ||
Argument = new Argument<bool>(name: "crashreport") | ||
}; | ||
|
||
private static Option TypeOption() => | ||
new Option( | ||
alias: "--type", | ||
|
Uh oh!
There was an error while loading. Please reload this page.