From 4253ed3e5b714a0bee12dce37d7c57cf79927074 Mon Sep 17 00:00:00 2001 From: lizzie Date: Fri, 11 Jul 2025 20:19:14 +0100 Subject: [PATCH] [yuzu_cmd] gdbstub option --- src/yuzu_cmd/yuzu.cpp | 49 ++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/src/yuzu_cmd/yuzu.cpp b/src/yuzu_cmd/yuzu.cpp index 005f5bf1db..6251faab91 100644 --- a/src/yuzu_cmd/yuzu.cpp +++ b/src/yuzu_cmd/yuzu.cpp @@ -162,24 +162,22 @@ static void OnMessageReceived(const Network::ChatEntry& msg) { } static void OnStatusMessageReceived(const Network::StatusMessageEntry& msg) { - std::string message; - switch (msg.type) { - case Network::IdMemberJoin: - message = fmt::format("{} has joined", msg.nickname); - break; - case Network::IdMemberLeave: - message = fmt::format("{} has left", msg.nickname); - break; - case Network::IdMemberKicked: - message = fmt::format("{} has been kicked", msg.nickname); - break; - case Network::IdMemberBanned: - message = fmt::format("{} has been banned", msg.nickname); - break; - case Network::IdAddressUnbanned: - message = fmt::format("{} has been unbanned", msg.nickname); - break; - } + std::string message = [&]() { + switch (msg.type) { + case Network::IdMemberJoin: + return fmt::format("{} has joined", msg.nickname); + case Network::IdMemberLeave: + return fmt::format("{} has left", msg.nickname); + case Network::IdMemberKicked: + return fmt::format("{} has been kicked", msg.nickname); + case Network::IdMemberBanned: + return fmt::format("{} has been banned", msg.nickname); + case Network::IdAddressUnbanned: + return fmt::format("{} has been unbanned", msg.nickname); + default: + return std::string{}; + } + }(); if (!message.empty()) std::cout << std::endl << "* " << message << std::endl << std::endl; } @@ -209,10 +207,10 @@ int main(int argc, char** argv) { } #endif std::string filepath; - std::optional config_path; + std::optional config_path{}; std::string program_args; - std::optional selected_user; - + std::optional selected_user{}; + std::optional override_gdb_port{}; bool use_multiplayer = false; bool fullscreen = false; std::string nickname{}; @@ -222,6 +220,7 @@ int main(int argc, char** argv) { static struct option long_options[] = { // clang-format off + {"debug", no_argument, 0, 'd'}, {"config", required_argument, 0, 'c'}, {"fullscreen", no_argument, 0, 'f'}, {"help", no_argument, 0, 'h'}, @@ -238,6 +237,9 @@ int main(int argc, char** argv) { int arg = getopt_long(argc, argv, "g:fhvp::c:u:", long_options, &option_index); if (arg != -1) { switch (static_cast(arg)) { + case 'd': + override_gdb_port = atoi(optarg); + break; case 'c': config_path = optarg; break; @@ -323,6 +325,11 @@ int main(int argc, char** argv) { Settings::values.current_user = std::clamp(*selected_user, 0, 7); } + if (override_gdb_port.has_value()) { + Settings::values.use_gdbstub = true; + Settings::values.gdbstub_port = *override_gdb_port; + } + #ifdef _WIN32 LocalFree(argv_w); #endif