diff --git a/core/debugger/remote_debugger.cpp b/core/debugger/remote_debugger.cpp index d14ea59a96f..4a9d8a00061 100644 --- a/core/debugger/remote_debugger.cpp +++ b/core/debugger/remote_debugger.cpp @@ -544,25 +544,60 @@ void RemoteDebugger::debug(bool p_can_continue, bool p_is_error_breakpoint) { break; } + PackedStringArray input_names; + Array input_vals; + List locals; List local_vals; - script_debugger->get_break_language()->debug_get_stack_level_locals(frame, &locals, &local_vals); ERR_FAIL_COND(locals.size() != local_vals.size()); - PackedStringArray locals_vector; for (const String &S : locals) { - locals_vector.append(S); + input_names.append(S); } - Array local_vals_array; for (const Variant &V : local_vals) { - local_vals_array.append(V); + input_vals.append(V); + } + + List globals; + List globals_vals; + script_debugger->get_break_language()->debug_get_globals(&globals, &globals_vals); + ERR_FAIL_COND(globals.size() != globals_vals.size()); + + for (const String &S : globals) { + input_names.append(S); + } + + for (const Variant &V : globals_vals) { + input_vals.append(V); + } + + List native_types; + ClassDB::get_class_list(&native_types); + for (const StringName &E : native_types) { + if (!ClassDB::is_class_exposed(E) || !Engine::get_singleton()->has_singleton(E) || Engine::get_singleton()->is_singleton_editor_only(E)) { + continue; + } + + input_names.append(E); + input_vals.append(Engine::get_singleton()->get_singleton_object(E)); + } + + List user_types; + ScriptServer::get_global_class_list(&user_types); + for (const StringName &S : user_types) { + String scr_path = ScriptServer::get_global_class_path(S); + Ref