Răsfoiți Sursa

core/debugger: support operation in yuzu-cmd

Liam 4 ani în urmă
părinte
comite
de6c0defb3
3 a modificat fișierele cu 15 adăugiri și 0 ștergeri
  1. 2 0
      src/yuzu_cmd/config.cpp
  2. 5 0
      src/yuzu_cmd/default_ini.h
  3. 8 0
      src/yuzu_cmd/yuzu.cpp

+ 2 - 0
src/yuzu_cmd/config.cpp

@@ -344,6 +344,8 @@ void Config::ReadValues() {
     ReadSetting("Debugging", Settings::values.use_debug_asserts);
     ReadSetting("Debugging", Settings::values.use_auto_stub);
     ReadSetting("Debugging", Settings::values.disable_macro_jit);
+    ReadSetting("Debugging", Settings::values.use_gdbstub);
+    ReadSetting("Debugging", Settings::values.gdbstub_port);
 
     const auto title_list = sdl2_config->Get("AddOns", "title_ids", "");
     std::stringstream ss(title_list);

+ 5 - 0
src/yuzu_cmd/default_ini.h

@@ -437,6 +437,11 @@ disable_macro_jit=false
 # Presents guest frames as they become available. Experimental.
 # false: Disabled (default), true: Enabled
 disable_fps_limit=false
+# Determines whether to enable the GDB stub and wait for the debugger to attach before running.
+# false: Disabled (default), true: Enabled
+use_gdbstub=false
+# The port to use for the GDB server, if it is enabled.
+gdbstub_port=6543
 
 [WebService]
 # Whether or not to enable telemetry

+ 8 - 0
src/yuzu_cmd/yuzu.cpp

@@ -217,7 +217,15 @@ int main(int argc, char** argv) {
             [](VideoCore::LoadCallbackStage, size_t value, size_t total) {});
     }
 
+    system.RegisterExitCallback([&] {
+        // Just exit right away.
+        exit(0);
+    });
+
     void(system.Run());
+    if (system.DebuggerEnabled()) {
+        system.InitializeDebugger();
+    }
     while (emu_window->IsOpen()) {
         emu_window->WaitEvent();
     }