summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt/Debugger/CodeWidget.cpp
diff options
context:
space:
mode:
authorAdmiral H. Curtiss <pikachu025@gmail.com>2024-07-23 20:36:34 +0200
committerGitHub <noreply@github.com>2024-07-23 20:36:34 +0200
commit2d8f54fdd257840cac63999e99856482d528b11a (patch)
treee86e283ab71947cc8f5f64fb8a3ccb24f45a49d8 /Source/Core/DolphinQt/Debugger/CodeWidget.cpp
parent7db5caf43e85362aacb47fd4c5383ddaed31b052 (diff)
parent5b13903e6a7e6ffcc707005692c3418d14e98137 (diff)
Merge pull request #12862 from SuperSamus/debugger-fixes
Debugger: Various fixes
Diffstat (limited to 'Source/Core/DolphinQt/Debugger/CodeWidget.cpp')
-rw-r--r--Source/Core/DolphinQt/Debugger/CodeWidget.cpp16
1 files changed, 5 insertions, 11 deletions
diff --git a/Source/Core/DolphinQt/Debugger/CodeWidget.cpp b/Source/Core/DolphinQt/Debugger/CodeWidget.cpp
index e5dd96014b..36d3d92284 100644
--- a/Source/Core/DolphinQt/Debugger/CodeWidget.cpp
+++ b/Source/Core/DolphinQt/Debugger/CodeWidget.cpp
@@ -455,7 +455,6 @@ void CodeWidget::Step()
auto& power_pc = m_system.GetPowerPC();
PowerPC::CoreMode old_mode = power_pc.GetMode();
power_pc.SetMode(PowerPC::CoreMode::Interpreter);
- power_pc.GetBreakPoints().ClearAllTemporary();
cpu.StepOpcode(&sync_event);
sync_event.WaitFor(std::chrono::milliseconds(20));
power_pc.SetMode(old_mode);
@@ -482,9 +481,8 @@ void CodeWidget::StepOver()
if (inst.LK)
{
auto& breakpoints = m_system.GetPowerPC().GetBreakPoints();
- breakpoints.ClearAllTemporary();
- breakpoints.Add(m_system.GetPPCState().pc + 4, true);
- cpu.EnableStepping(false);
+ breakpoints.SetTemporary(m_system.GetPPCState().pc + 4);
+ cpu.SetStepping(false);
Core::DisplayMessage(tr("Step over in progress...").toStdString(), 2000);
}
else
@@ -519,12 +517,9 @@ void CodeWidget::StepOut()
auto& power_pc = m_system.GetPowerPC();
auto& ppc_state = power_pc.GetPPCState();
- auto& breakpoints = power_pc.GetBreakPoints();
{
Core::CPUThreadGuard guard(m_system);
- breakpoints.ClearAllTemporary();
-
PowerPC::CoreMode old_mode = power_pc.GetMode();
power_pc.SetMode(PowerPC::CoreMode::Interpreter);
@@ -547,8 +542,7 @@ void CodeWidget::StepOut()
do
{
power_pc.SingleStep();
- } while (ppc_state.pc != next_pc && clock::now() < timeout &&
- !breakpoints.IsAddressBreakPoint(ppc_state.pc));
+ } while (ppc_state.pc != next_pc && clock::now() < timeout && !power_pc.CheckBreakPoints());
}
else
{
@@ -556,14 +550,14 @@ void CodeWidget::StepOut()
}
inst = PowerPC::MMU::HostRead_Instruction(guard, ppc_state.pc);
- } while (clock::now() < timeout && !breakpoints.IsAddressBreakPoint(ppc_state.pc));
+ } while (clock::now() < timeout && !power_pc.CheckBreakPoints());
power_pc.SetMode(old_mode);
}
emit Host::GetInstance()->UpdateDisasmDialog();
- if (breakpoints.IsAddressBreakPoint(ppc_state.pc))
+ if (power_pc.CheckBreakPoints())
Core::DisplayMessage(tr("Breakpoint encountered! Step out aborted.").toStdString(), 2000);
else if (clock::now() >= timeout)
Core::DisplayMessage(tr("Step out timed out!").toStdString(), 2000);