1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-07 12:30:27 +00:00

Improve crash handler message display

- State the Godot version and full hash in the backtrace.
- Add decoration around the crash backtrace, both to make it stand out
  from other messages and help the user figure out what they should copy.

(cherry picked from commit 8556dd1bef)
This commit is contained in:
Hugo Locurcio
2021-04-12 16:59:23 +02:00
committed by Rémi Verschelde
parent e2b71de38b
commit 4d94aba0ed
3 changed files with 30 additions and 0 deletions

View File

@@ -32,6 +32,8 @@
#include "core/os/os.h"
#include "core/project_settings.h"
#include "core/version.h"
#include "core/version_hash.gen.h"
#include "main/main.h"
#ifdef CRASH_HANDLER_EXCEPTION
@@ -127,6 +129,7 @@ DWORD CrashHandlerException(EXCEPTION_POINTERS *ep) {
return EXCEPTION_CONTINUE_SEARCH;
}
fprintf(stderr, "\n================================================================\n");
fprintf(stderr, "%s: Program crashed\n", __FUNCTION__);
if (OS::get_singleton()->get_main_loop())
@@ -175,6 +178,12 @@ DWORD CrashHandlerException(EXCEPTION_POINTERS *ep) {
msg = proj_settings->get("debug/settings/crash_handler/message");
}
// Print the engine version just before, so that people are reminded to include the version in backtrace reports.
if (String(VERSION_HASH).length() != 0) {
fprintf(stderr, "Engine version: " VERSION_FULL_NAME " (" VERSION_HASH ")\n");
} else {
fprintf(stderr, "Engine version: " VERSION_FULL_NAME "\n");
}
fprintf(stderr, "Dumping the backtrace. %ls\n", msg.c_str());
int n = 0;
@@ -200,6 +209,7 @@ DWORD CrashHandlerException(EXCEPTION_POINTERS *ep) {
} while (frame.AddrReturn.Offset != 0 && n < 256);
fprintf(stderr, "-- END OF BACKTRACE --\n");
fprintf(stderr, "================================================================\n");
SymCleanup(process);