From e6eeaf28df19c9e8b5acef44c1b38f174b1fce99 Mon Sep 17 00:00:00 2001 From: yds Date: Tue, 29 Oct 2024 19:11:19 -0300 Subject: [PATCH] Add editor setting to stop the bottom panel from switching to the stack trace --- doc/classes/EditorSettings.xml | 3 +++ editor/debugger/script_editor_debugger.cpp | 2 +- editor/editor_settings.cpp | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/classes/EditorSettings.xml b/doc/classes/EditorSettings.xml index a5097521dc4..ec04cfec963 100644 --- a/doc/classes/EditorSettings.xml +++ b/doc/classes/EditorSettings.xml @@ -188,6 +188,9 @@ If [code]true[/code], automatically switches to the [b]Remote[/b] scene tree when running the project from the editor. If [code]false[/code], stays on the [b]Local[/b] scene tree when running the project from the editor. [b]Warning:[/b] Enabling this setting can cause stuttering when running a project with a large amount of nodes (typically a few thousands of nodes or more), even if the editor window isn't focused. This is due to the remote scene tree being updated every second regardless of whether the editor is focused. + + If [code]true[/code], automatically switches to the [b]Stack Trace[/b] panel when the debugger hits a breakpoint or steps. + If [code]true[/code], enables collection of profiling data from non-GDScript Godot functions, such as engine class methods. Enabling this slows execution while profiling further. diff --git a/editor/debugger/script_editor_debugger.cpp b/editor/debugger/script_editor_debugger.cpp index 73c59707d23..b2d7044f459 100644 --- a/editor/debugger/script_editor_debugger.cpp +++ b/editor/debugger/script_editor_debugger.cpp @@ -315,7 +315,7 @@ void ScriptEditorDebugger::_thread_debug_enter(uint64_t p_thread_id) { ThreadDebugged &td = threads_debugged[p_thread_id]; _set_reason_text(td.error, MESSAGE_ERROR); emit_signal(SNAME("breaked"), true, td.can_debug, td.error, td.has_stackdump); - if (!td.error.is_empty()) { + if (!td.error.is_empty() && EDITOR_GET("debugger/auto_switch_to_stack_trace")) { tabs->set_current_tab(0); } inspector->clear_cache(); // Take a chance to force remote objects update. diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp index 12a7c3a2ff8..b763c010c2d 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -965,6 +965,7 @@ void EditorSettings::_load_defaults(Ref p_extra_config) { /* Debugger/profiler */ EDITOR_SETTING_BASIC(Variant::BOOL, PROPERTY_HINT_NONE, "debugger/auto_switch_to_remote_scene_tree", false, "") + EDITOR_SETTING_BASIC(Variant::BOOL, PROPERTY_HINT_NONE, "debugger/auto_switch_to_stack_trace", true, "") EDITOR_SETTING(Variant::INT, PROPERTY_HINT_RANGE, "debugger/profiler_frame_history_size", 3600, "60,10000,1") EDITOR_SETTING(Variant::INT, PROPERTY_HINT_RANGE, "debugger/profiler_frame_max_functions", 64, "16,512,1") EDITOR_SETTING(Variant::INT, PROPERTY_HINT_RANGE, "debugger/profiler_target_fps", 60, "1,1000,1")