Enable breakpoint processing when stepping

This commit is contained in:
Henrik Rydgård committed 2026-08-16 17:37:05 +02:00
1 parent 14405c08cf
commit f3d31846bb
6 files changed
+146 -61

No files matched your search

+11 -2
View File
@@ -144,6 +144,10 @@ bool BreakpointManager::RangeContainsBreakPoint(u32 addr, u32 size)
}
int BreakpointManager::AddBreakPoint(u32 addr, bool temp) {
if (addr & 3) {
WARN_LOG(Log::Debugger, "Breakpoint added at %08x will not be effective - unaligned address.", addr);
}
size_t bp = FindBreakpoint(addr, true, temp);
if (bp == INVALID_BREAKPOINT) {
BreakPoint pt;
@@ -659,19 +663,24 @@ BreakAction BreakpointManager::ExecRegBreakpoint(int reg, u32 pc) {
NOTICE_LOG(Log::JIT, "BKP reg write r%d, PC=%08x: %s", reg, pc, formatted.c_str());
}
}
if (info.result & BREAK_ACTION_PAUSE) {
if ((info.result & BREAK_ACTION_PAUSE) && g_breakpoints.CheckSkipFirst() != pc) {
Core_Break(BreakReason::RegBreakpoint, pc);
}
return info.result;
}
void BreakpointManager::ClearSkipFirst() {
breakSkipFirstAt_ = 0;
breakSkipFirstTicks_ = 0;
}
void BreakpointManager::SetSkipFirst(u32 pc) {
breakSkipFirstAt_ = pc;
breakSkipFirstTicks_ = CoreTiming::GetTicks(currentMIPS);
}
u32 BreakpointManager::CheckSkipFirst() {
u32 BreakpointManager::CheckSkipFirst() const {
u32 pc = breakSkipFirstAt_;
if (breakSkipFirstTicks_ == CoreTiming::GetTicks(currentMIPS))
return pc;