diff options
| author | 2022-05-30 19:35:01 -0400 | |
|---|---|---|
| committer | 2022-06-01 00:01:25 -0400 | |
| commit | fb4b3c127f7c390358d7f4cadd2f58de116fec48 (patch) | |
| tree | e2588a859d364a32be0cd9e0401a345c6492d1a7 /src/core/core.cpp | |
| parent | Merge pull request #8368 from german77/seventimes (diff) | |
| download | yuzu-fb4b3c127f7c390358d7f4cadd2f58de116fec48.tar.gz yuzu-fb4b3c127f7c390358d7f4cadd2f58de116fec48.tar.xz yuzu-fb4b3c127f7c390358d7f4cadd2f58de116fec48.zip | |
core/debugger: Implement new GDB stub debugger
Diffstat (limited to 'src/core/core.cpp')
| -rw-r--r-- | src/core/core.cpp | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/src/core/core.cpp b/src/core/core.cpp index 8a887904d..7d974ba65 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | #include "core/core.h" | 17 | #include "core/core.h" |
| 18 | #include "core/core_timing.h" | 18 | #include "core/core_timing.h" |
| 19 | #include "core/cpu_manager.h" | 19 | #include "core/cpu_manager.h" |
| 20 | #include "core/debugger/debugger.h" | ||
| 20 | #include "core/device_memory.h" | 21 | #include "core/device_memory.h" |
| 21 | #include "core/file_sys/bis_factory.h" | 22 | #include "core/file_sys/bis_factory.h" |
| 22 | #include "core/file_sys/mode.h" | 23 | #include "core/file_sys/mode.h" |
| @@ -171,6 +172,10 @@ struct System::Impl { | |||
| 171 | } | 172 | } |
| 172 | } | 173 | } |
| 173 | 174 | ||
| 175 | void InitializeDebugger(System& system, u16 port) { | ||
| 176 | debugger = std::make_unique<Debugger>(system, port); | ||
| 177 | } | ||
| 178 | |||
| 174 | SystemResultStatus Init(System& system, Frontend::EmuWindow& emu_window) { | 179 | SystemResultStatus Init(System& system, Frontend::EmuWindow& emu_window) { |
| 175 | LOG_DEBUG(Core, "initialized OK"); | 180 | LOG_DEBUG(Core, "initialized OK"); |
| 176 | 181 | ||
| @@ -329,6 +334,7 @@ struct System::Impl { | |||
| 329 | gpu_core->NotifyShutdown(); | 334 | gpu_core->NotifyShutdown(); |
| 330 | } | 335 | } |
| 331 | 336 | ||
| 337 | debugger.reset(); | ||
| 332 | services.reset(); | 338 | services.reset(); |
| 333 | service_manager.reset(); | 339 | service_manager.reset(); |
| 334 | cheat_engine.reset(); | 340 | cheat_engine.reset(); |
| @@ -436,6 +442,9 @@ struct System::Impl { | |||
| 436 | /// Network instance | 442 | /// Network instance |
| 437 | Network::NetworkInstance network_instance; | 443 | Network::NetworkInstance network_instance; |
| 438 | 444 | ||
| 445 | /// Debugger | ||
| 446 | std::unique_ptr<Core::Debugger> debugger; | ||
| 447 | |||
| 439 | SystemResultStatus status = SystemResultStatus::Success; | 448 | SystemResultStatus status = SystemResultStatus::Success; |
| 440 | std::string status_details = ""; | 449 | std::string status_details = ""; |
| 441 | 450 | ||
| @@ -472,10 +481,6 @@ SystemResultStatus System::Pause() { | |||
| 472 | return impl->Pause(); | 481 | return impl->Pause(); |
| 473 | } | 482 | } |
| 474 | 483 | ||
| 475 | SystemResultStatus System::SingleStep() { | ||
| 476 | return SystemResultStatus::Success; | ||
| 477 | } | ||
| 478 | |||
| 479 | void System::InvalidateCpuInstructionCaches() { | 484 | void System::InvalidateCpuInstructionCaches() { |
| 480 | impl->kernel.InvalidateAllInstructionCaches(); | 485 | impl->kernel.InvalidateAllInstructionCaches(); |
| 481 | } | 486 | } |
| @@ -496,6 +501,10 @@ void System::UnstallCPU() { | |||
| 496 | impl->UnstallCPU(); | 501 | impl->UnstallCPU(); |
| 497 | } | 502 | } |
| 498 | 503 | ||
| 504 | void System::InitializeDebugger() { | ||
| 505 | impl->InitializeDebugger(*this, Settings::values.gdbstub_port.GetValue()); | ||
| 506 | } | ||
| 507 | |||
| 499 | SystemResultStatus System::Load(Frontend::EmuWindow& emu_window, const std::string& filepath, | 508 | SystemResultStatus System::Load(Frontend::EmuWindow& emu_window, const std::string& filepath, |
| 500 | u64 program_id, std::size_t program_index) { | 509 | u64 program_id, std::size_t program_index) { |
| 501 | return impl->Load(*this, emu_window, filepath, program_id, program_index); | 510 | return impl->Load(*this, emu_window, filepath, program_id, program_index); |
| @@ -809,6 +818,18 @@ bool System::IsMulticore() const { | |||
| 809 | return impl->is_multicore; | 818 | return impl->is_multicore; |
| 810 | } | 819 | } |
| 811 | 820 | ||
| 821 | bool System::DebuggerEnabled() const { | ||
| 822 | return Settings::values.use_gdbstub.GetValue(); | ||
| 823 | } | ||
| 824 | |||
| 825 | Core::Debugger& System::GetDebugger() { | ||
| 826 | return *impl->debugger; | ||
| 827 | } | ||
| 828 | |||
| 829 | const Core::Debugger& System::GetDebugger() const { | ||
| 830 | return *impl->debugger; | ||
| 831 | } | ||
| 832 | |||
| 812 | void System::RegisterExecuteProgramCallback(ExecuteProgramCallback&& callback) { | 833 | void System::RegisterExecuteProgramCallback(ExecuteProgramCallback&& callback) { |
| 813 | impl->execute_program_callback = std::move(callback); | 834 | impl->execute_program_callback = std::move(callback); |
| 814 | } | 835 | } |