diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBreakpointsManager_7_0.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBreakpointsManager_7_0.java index 79d528dd9bb..60e7a183e05 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBreakpointsManager_7_0.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBreakpointsManager_7_0.java @@ -78,8 +78,8 @@ public class GDBBreakpointsManager_7_0 extends MIBreakpointsManager { // Process created. IContainerDMContext containerWithPid = (IContainerDMContext)e.getDMContext(); - assert getPlatformToAttributesMaps().keySet().size() == 1; // Only one process for GDB 7.0 and 7.1 - for (IBreakpointsTargetDMContext oldBpTarget : getPlatformToAttributesMaps().keySet()) { + assert getTrackedBreakpointTargetContexts().size() == 1; // Only one process for GDB 7.0 and 7.1 + for (IBreakpointsTargetDMContext oldBpTarget : getTrackedBreakpointTargetContexts()) { assert oldBpTarget instanceof IContainerDMContext; assert !containerWithPid.equals(oldBpTarget); // BpTarget does not have pid, while new container does diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsManager.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsManager.java index adc37c12d70..413117d7463 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsManager.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsManager.java @@ -23,6 +23,7 @@ package org.eclipse.cdt.dsf.mi.service; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Hashtable; @@ -589,6 +590,17 @@ public class MIBreakpointsManager extends AbstractDsfService implements IBreakpo } } + /** + * Return the collection of tracked target breakpoint contexts. Use this method + * instead of implying the installed collection from the various maps contained + * in the manager. + * + * @since 5.5 + */ + protected Collection getTrackedBreakpointTargetContexts() { + return fPlatformToAttributesMaps.keySet(); + } + /////////////////////////////////////////////////////////////////////////// // Back-end interface functions /////////////////////////////////////////////////////////////////////////// @@ -1371,9 +1383,9 @@ public class MIBreakpointsManager extends AbstractDsfService implements IBreakpo rm.done(); } }; - countingRm.setDoneCount(fPlatformToAttributesMaps.size()); + countingRm.setDoneCount(getTrackedBreakpointTargetContexts().size()); - for (final IBreakpointsTargetDMContext dmc : fPlatformToAttributesMaps.keySet()) { + for (final IBreakpointsTargetDMContext dmc : getTrackedBreakpointTargetContexts()) { boolean filtered = isBreakpointEntirelyFiltered(dmc, (ICBreakpoint)breakpoint); if (!filtered) { determineDebuggerPath(dmc, attrs, @@ -1462,13 +1474,13 @@ public class MIBreakpointsManager extends AbstractDsfService implements IBreakpo } } }; - countingRm.setDoneCount(fPlatformToAttributesMaps.size()); + countingRm.setDoneCount(getTrackedBreakpointTargetContexts().size()); // Mark the breakpoint as being updated and go fPendingRequests.add(breakpoint); // Modify the breakpoint in all the execution contexts - for (final IBreakpointsTargetDMContext dmc : fPlatformToAttributesMaps.keySet()) { + for (final IBreakpointsTargetDMContext dmc : getTrackedBreakpointTargetContexts()) { determineDebuggerPath(dmc, attrs, new RequestMonitor(getExecutor(), countingRm) { @Override @@ -1505,10 +1517,10 @@ public class MIBreakpointsManager extends AbstractDsfService implements IBreakpo } } }; - countingRm.setDoneCount(fPlatformToAttributesMaps.size()); + countingRm.setDoneCount(getTrackedBreakpointTargetContexts().size()); // Remove the breakpoint in all the execution contexts - for (IBreakpointsTargetDMContext dmc : fPlatformToAttributesMaps.keySet()) { + for (IBreakpointsTargetDMContext dmc : getTrackedBreakpointTargetContexts()) { if (fPlatformToAttributesMaps.get(dmc).containsKey(breakpoint)) { uninstallBreakpoint(dmc, (ICBreakpoint) breakpoint, countingRm); }