Merge remote-tracking branch 'origin/GP-5671_Dan_fixStaleLogicalBpt' into Ghidra_11.4

This commit is contained in:
Ryan Kurtz
2025-05-15 13:33:58 -04:00
2 changed files with 11 additions and 6 deletions
@@ -21,7 +21,7 @@ import ghidra.trace.model.breakpoint.TraceBreakpoint;
public interface LogicalBreakpointsChangeListener {
default void breakpointAdded(LogicalBreakpoint added) {
};
}
default void breakpointsAdded(Collection<LogicalBreakpoint> added) {
for (LogicalBreakpoint a : added) {
@@ -30,7 +30,7 @@ public interface LogicalBreakpointsChangeListener {
}
default void breakpointUpdated(LogicalBreakpoint updated) {
};
}
default void breakpointsUpdated(Collection<LogicalBreakpoint> updated) {
for (LogicalBreakpoint u : updated) {
@@ -39,7 +39,7 @@ public interface LogicalBreakpointsChangeListener {
}
default void breakpointRemoved(LogicalBreakpoint removed) {
};
}
default void breakpointsRemoved(Collection<LogicalBreakpoint> removed) {
for (LogicalBreakpoint r : removed) {
@@ -548,7 +548,12 @@ public class DebuggerLogicalBreakpointServicePlugin extends Plugin
Collection<TraceBreakpoint> breakpoints, ControlMode mode) {
for (TraceBreakpoint tb : breakpoints) {
try {
trackTraceBreakpoint(a, tb, mode, false);
/**
* Sadly, even something as simple as toggling a breakpoint can cause so many
* events that the manager punts to OBJECT_RESTORED. Thus, we have to set
* forceUpdate here.
*/
trackTraceBreakpoint(a, tb, mode, true);
}
catch (TrackedTooSoonException e) {
// This can still happen during reload (on OBJECT_RESTORED)