mirror of
https://github.com/sourcegit-scm/sourcegit.git
synced 2024-12-24 20:57:19 -08:00
Merge pull request #254 from gadfly3173/fix/log-exception
fix: log UnobservedTaskException
This commit is contained in:
commit
b07aa9e63f
1 changed files with 37 additions and 19 deletions
|
@ -45,6 +45,17 @@ namespace SourceGit
|
||||||
[STAThread]
|
[STAThread]
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
|
AppDomain.CurrentDomain.UnhandledException += (sender, e) =>
|
||||||
|
{
|
||||||
|
LogException(e.ExceptionObject as Exception);
|
||||||
|
};
|
||||||
|
|
||||||
|
TaskScheduler.UnobservedTaskException += (sender, e) =>
|
||||||
|
{
|
||||||
|
LogException(e.Exception);
|
||||||
|
e.SetObserved();
|
||||||
|
};
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (TryLaunchedAsRebaseTodoEditor(args, out int exitTodo))
|
if (TryLaunchedAsRebaseTodoEditor(args, out int exitTodo))
|
||||||
|
@ -56,25 +67,7 @@ namespace SourceGit
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
var builder = new StringBuilder();
|
LogException(ex);
|
||||||
builder.Append($"Crash::: {ex.GetType().FullName}: {ex.Message}\n\n");
|
|
||||||
builder.Append("----------------------------\n");
|
|
||||||
builder.Append($"Version: {Assembly.GetExecutingAssembly().GetName().Version}\n");
|
|
||||||
builder.Append($"OS: {Environment.OSVersion.ToString()}\n");
|
|
||||||
builder.Append($"Framework: {AppDomain.CurrentDomain.SetupInformation.TargetFrameworkName}\n");
|
|
||||||
builder.Append($"Source: {ex.Source}\n");
|
|
||||||
builder.Append($"---------------------------\n\n");
|
|
||||||
builder.Append(ex.StackTrace);
|
|
||||||
while (ex.InnerException != null)
|
|
||||||
{
|
|
||||||
ex = ex.InnerException;
|
|
||||||
builder.Append($"\n\nInnerException::: {ex.GetType().FullName}: {ex.Message}\n");
|
|
||||||
builder.Append(ex.StackTrace);
|
|
||||||
}
|
|
||||||
|
|
||||||
var time = DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss");
|
|
||||||
var file = Path.Combine(Native.OS.DataDir, $"crash_{time}.log");
|
|
||||||
File.WriteAllText(file, builder.ToString());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -338,6 +331,31 @@ namespace SourceGit
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void LogException(Exception ex)
|
||||||
|
{
|
||||||
|
if (ex == null) return;
|
||||||
|
|
||||||
|
var builder = new StringBuilder();
|
||||||
|
builder.Append($"Crash::: {ex.GetType().FullName}: {ex.Message}\n\n");
|
||||||
|
builder.Append("----------------------------\n");
|
||||||
|
builder.Append($"Version: {Assembly.GetExecutingAssembly().GetName().Version}\n");
|
||||||
|
builder.Append($"OS: {Environment.OSVersion.ToString()}\n");
|
||||||
|
builder.Append($"Framework: {AppDomain.CurrentDomain.SetupInformation.TargetFrameworkName}\n");
|
||||||
|
builder.Append($"Source: {ex.Source}\n");
|
||||||
|
builder.Append($"---------------------------\n\n");
|
||||||
|
builder.Append(ex.StackTrace);
|
||||||
|
while (ex.InnerException != null)
|
||||||
|
{
|
||||||
|
ex = ex.InnerException;
|
||||||
|
builder.Append($"\n\nInnerException::: {ex.GetType().FullName}: {ex.Message}\n");
|
||||||
|
builder.Append(ex.StackTrace);
|
||||||
|
}
|
||||||
|
|
||||||
|
var time = DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss");
|
||||||
|
var file = Path.Combine(Native.OS.DataDir, $"crash_{time}.log");
|
||||||
|
File.WriteAllText(file, builder.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
private static void ShowSelfUpdateResult(object data)
|
private static void ShowSelfUpdateResult(object data)
|
||||||
{
|
{
|
||||||
Dispatcher.UIThread.Post(() =>
|
Dispatcher.UIThread.Post(() =>
|
||||||
|
|
Loading…
Reference in a new issue