You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-04 12:00:25 +00:00
Merge pull request #91006 from reduz/live-backtrace
Ability to print and log script backtraces
This commit is contained in:
@@ -1178,7 +1178,7 @@ String OS_Unix::get_executable_path() const {
|
||||
#endif
|
||||
}
|
||||
|
||||
void UnixTerminalLogger::log_error(const char *p_function, const char *p_file, int p_line, const char *p_code, const char *p_rationale, bool p_editor_notify, ErrorType p_type) {
|
||||
void UnixTerminalLogger::log_error(const char *p_function, const char *p_file, int p_line, const char *p_code, const char *p_rationale, bool p_editor_notify, ErrorType p_type, const Vector<Ref<ScriptBacktrace>> &p_script_backtraces) {
|
||||
if (!should_log(true)) {
|
||||
return;
|
||||
}
|
||||
@@ -1205,25 +1205,32 @@ void UnixTerminalLogger::log_error(const char *p_function, const char *p_file, i
|
||||
const char *cyan_bold = tty ? "\E[1;36m" : "";
|
||||
const char *reset = tty ? "\E[0m" : "";
|
||||
|
||||
const char *indent = "";
|
||||
switch (p_type) {
|
||||
case ERR_WARNING:
|
||||
indent = " ";
|
||||
logf_error("%sWARNING:%s %s\n", yellow_bold, yellow, err_details);
|
||||
logf_error("%s at: %s (%s:%i)%s\n", gray, p_function, p_file, p_line, reset);
|
||||
break;
|
||||
case ERR_SCRIPT:
|
||||
indent = " ";
|
||||
logf_error("%sSCRIPT ERROR:%s %s\n", magenta_bold, magenta, err_details);
|
||||
logf_error("%s at: %s (%s:%i)%s\n", gray, p_function, p_file, p_line, reset);
|
||||
break;
|
||||
case ERR_SHADER:
|
||||
indent = " ";
|
||||
logf_error("%sSHADER ERROR:%s %s\n", cyan_bold, cyan, err_details);
|
||||
logf_error("%s at: %s (%s:%i)%s\n", gray, p_function, p_file, p_line, reset);
|
||||
break;
|
||||
case ERR_ERROR:
|
||||
default:
|
||||
indent = " ";
|
||||
logf_error("%sERROR:%s %s\n", red_bold, red, err_details);
|
||||
logf_error("%s at: %s (%s:%i)%s\n", gray, p_function, p_file, p_line, reset);
|
||||
break;
|
||||
}
|
||||
|
||||
logf_error("%s%sat: %s (%s:%i)%s\n", gray, indent, p_function, p_file, p_line, reset);
|
||||
|
||||
for (const Ref<ScriptBacktrace> &backtrace : p_script_backtraces) {
|
||||
logf_error("%s%s%s\n", gray, backtrace->format(strlen(indent)).utf8().get_data(), reset);
|
||||
}
|
||||
}
|
||||
|
||||
UnixTerminalLogger::~UnixTerminalLogger() {}
|
||||
|
||||
Reference in New Issue
Block a user