From a0c1320aec5d162155355fbc2d29f5576858eacf Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Sun, 4 Apr 2021 20:24:16 -0700 Subject: [PATCH] Debugger: Return detail for breakpoints in macros. --- Core/Debugger/WebSocket/DisasmSubscriber.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Core/Debugger/WebSocket/DisasmSubscriber.cpp b/Core/Debugger/WebSocket/DisasmSubscriber.cpp index f8820cee48..5f4848ea8a 100644 --- a/Core/Debugger/WebSocket/DisasmSubscriber.cpp +++ b/Core/Debugger/WebSocket/DisasmSubscriber.cpp @@ -135,12 +135,20 @@ void WebSocketDisasmState::WriteDisasmLine(JsonWriter &json, const DisassemblyLi json.writeNull("dataSymbol"); } - bool enabled; + bool enabled = false; + int breakpointOffset = -1; + for (u32 i = 0; i < l.totalSize; i += 4) { + if (CBreakPoints::IsAddressBreakPoint(addr + i, &enabled)) + breakpointOffset = i; + if (breakpointOffset != -1 && enabled) + break; + } // TODO: Account for bp inside macro? - if (CBreakPoints::IsAddressBreakPoint(addr, &enabled)) { + if (breakpointOffset != -1) { json.pushDict("breakpoint"); json.writeBool("enabled", enabled); - auto cond = CBreakPoints::GetBreakPointCondition(addr); + json.writeUint("address", addr + breakpointOffset); + auto cond = CBreakPoints::GetBreakPointCondition(addr + breakpointOffset); if (cond) json.writeString("condition", cond->expressionString); else