diff options
author | Ignacio Roldán Etcheverry <neikeq@users.noreply.github.com> | 2019-03-08 07:05:41 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-08 07:05:41 +0100 |
commit | 65487ed4edbad17ee0bfa1834c9ebf5514748428 (patch) | |
tree | c21b577639b252e754de6dddcea663ea084fd981 /modules/mono/glue/Managed/Files | |
parent | 488884178e773a6e80070663d92cc53cb820bff9 (diff) | |
parent | 37d448fca7c212ecc48238cf295975165433c282 (diff) |
Merge pull request #26746 from shartte/godot-trace-listener
Add a custom TraceListener on Startup for Mono
Diffstat (limited to 'modules/mono/glue/Managed/Files')
-rw-r--r-- | modules/mono/glue/Managed/Files/DebuggingUtils.cs | 6 | ||||
-rw-r--r-- | modules/mono/glue/Managed/Files/GodotTraceListener.cs | 37 |
2 files changed, 43 insertions, 0 deletions
diff --git a/modules/mono/glue/Managed/Files/DebuggingUtils.cs b/modules/mono/glue/Managed/Files/DebuggingUtils.cs index b27816084e..edfe3464ec 100644 --- a/modules/mono/glue/Managed/Files/DebuggingUtils.cs +++ b/modules/mono/glue/Managed/Files/DebuggingUtils.cs @@ -19,6 +19,12 @@ namespace Godot sb.Append(" "); } + public static void InstallTraceListener() + { + Trace.Listeners.Clear(); + Trace.Listeners.Add(new GodotTraceListener()); + } + public static void GetStackFrameInfo(StackFrame frame, out string fileName, out int fileLineNumber, out string methodDecl) { fileName = frame.GetFileName(); diff --git a/modules/mono/glue/Managed/Files/GodotTraceListener.cs b/modules/mono/glue/Managed/Files/GodotTraceListener.cs new file mode 100644 index 0000000000..f1a00ae0fa --- /dev/null +++ b/modules/mono/glue/Managed/Files/GodotTraceListener.cs @@ -0,0 +1,37 @@ +using System; +using System.Diagnostics; + +namespace Godot +{ + internal class GodotTraceListener : TraceListener + { + public override void Write(string message) + { + GD.PrintRaw(message); + } + + public override void WriteLine(string message) + { + GD.Print(message); + } + + public override void Fail(string message, string detailMessage) + { + GD.PrintErr("Assertion failed: ", message); + if (detailMessage != null) + { + GD.PrintErr(" Details: ", detailMessage); + } + + try + { + var stackTrace = new StackTrace(true).ToString(); + GD.PrintErr(stackTrace); + } + catch + { + // ignored + } + } + } +} |