diff --git a/src/core/core.cpp b/src/core/core.cpp index c1d635afe..995c0f295 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -50,6 +50,10 @@ System::ResultStatus System::RunLoop(bool tight_loop) { } if (GDBStub::IsServerEnabled()) { + Kernel::Thread* thread = kernel->GetCurrentThreadManager().GetCurrentThread(); + if (thread && running_core) { + running_core->SaveContext(thread->context); + } GDBStub::HandlePacket(); // If the loop is halted and we want to step, use a tiny (1) number of instructions to diff --git a/src/core/gdbstub/gdbstub.cpp b/src/core/gdbstub/gdbstub.cpp index 1e42ff5e4..8093e7328 100644 --- a/src/core/gdbstub/gdbstub.cpp +++ b/src/core/gdbstub/gdbstub.cpp @@ -1264,10 +1264,9 @@ void SendTrap(Kernel::Thread* thread, int trap) { return; } - if (!halt_loop || current_thread == thread) { - current_thread = thread; - SendSignal(thread, trap); - } + current_thread = thread; + SendSignal(thread, trap); + halt_loop = true; send_trap = false; }