From d61801ad76d63e8e9945085d8fac5e307d85b0bf Mon Sep 17 00:00:00 2001 From: PabloMK7 Date: Sun, 5 Jul 2026 00:00:32 +0200 Subject: [PATCH] qt: gdb: Do not change GDB settings when the gdbport arg is used (#2257) --- src/citra_qt/citra_qt.cpp | 10 ++++++++-- src/citra_qt/citra_qt.h | 2 ++ src/core/core.cpp | 9 +++++++-- src/core/core.h | 5 +++++ 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/citra_qt/citra_qt.cpp b/src/citra_qt/citra_qt.cpp index cfa20ec06..be88de858 100644 --- a/src/citra_qt/citra_qt.cpp +++ b/src/citra_qt/citra_qt.cpp @@ -299,8 +299,7 @@ GMainWindow::GMainWindow(Core::System& system_) if (i >= args.size() - 1 || args[i + 1].startsWith(QChar::fromLatin1('-'))) { continue; } - Settings::values.use_gdbstub = true; - Settings::values.gdbstub_port = strtoul(args[++i].toLatin1(), NULL, 0); + gdbport_from_arg = strtoul(args[++i].toLatin1(), NULL, 0); continue; } @@ -1526,6 +1525,13 @@ void GMainWindow::BootGame(const QString& filename) { system.RegisterAppLoaderEarly(loader); } + // Override GDB settings if emulator was launched with + // GDB port option. + if (gdbport_from_arg != -1) { + system.SetGDBPortOverride(gdbport_from_arg); + system.SetDebugNextProcessFlag(); + } + system.ApplySettings(); Settings::LogSettings(); diff --git a/src/citra_qt/citra_qt.h b/src/citra_qt/citra_qt.h index 31240b05e..c7c6a7a79 100644 --- a/src/citra_qt/citra_qt.h +++ b/src/citra_qt/citra_qt.h @@ -407,6 +407,8 @@ private: // Whether game was paused due to stopping video dumping bool game_paused_for_dumping = false; + int gdbport_from_arg = -1; + QString gl_renderer; std::vector physical_devices; diff --git a/src/core/core.cpp b/src/core/core.cpp index 9b2144a50..e7b4788b3 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -762,8 +762,13 @@ void System::Reset() { void System::ApplySettings() { #ifdef ENABLE_GDBSTUB - GDBStub::SetServerPort(Settings::values.gdbstub_port.GetValue()); - GDBStub::ToggleServer(Settings::values.use_gdbstub.GetValue()); + if (override_gdb_port != -1) { + GDBStub::SetServerPort(override_gdb_port); + GDBStub::ToggleServer(true); + } else { + GDBStub::SetServerPort(Settings::values.gdbstub_port.GetValue()); + GDBStub::ToggleServer(Settings::values.use_gdbstub.GetValue()); + } #endif if (gpu) { diff --git a/src/core/core.h b/src/core/core.h index eed41f8bb..6ab019f47 100644 --- a/src/core/core.h +++ b/src/core/core.h @@ -421,6 +421,10 @@ public: void DebugUnscheduleAllThreadsFromFrontend(bool unschedule); + void SetGDBPortOverride(int port) { + override_gdb_port = port; + } + private: /** * Initialize the emulated system. @@ -531,6 +535,7 @@ private: std::function info_led_color_changed; bool debug_next_process; + int override_gdb_port = -1; friend class boost::serialization::access; template