mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-22 22:22:11 +02:00
Bug 433044 - Deleting a bp from gdb console causes it to be re-installed
Change-Id: I3e7b26bc31104fc8ef12c1330c0a0ff2125da8ae Signed-off-by: Marc Khouzam <marc.khouzam@ericsson.com> Reviewed-on: https://git.eclipse.org/r/25266 Tested-by: Hudson CI Reviewed-by: Mikhail Khodjaiants <mikhailkhod@googlemail.com> Tested-by: Mikhail Khodjaiants <mikhailkhod@googlemail.com>
This commit is contained in:
parent
fe24fd0570
commit
b985a7fc54
2 changed files with 26 additions and 0 deletions
|
@ -764,6 +764,11 @@ public class MIBreakpointsManager extends AbstractDsfService implements IBreakpo
|
||||||
final Map<ICBreakpoint, Set<String>> threadsIDs = fBreakpointThreads.get(dmc);
|
final Map<ICBreakpoint, Set<String>> threadsIDs = fBreakpointThreads.get(dmc);
|
||||||
assert threadsIDs != null;
|
assert threadsIDs != null;
|
||||||
|
|
||||||
|
// Remove all relevant target filters
|
||||||
|
// Note that this call is important if a breakpoint is removed directly
|
||||||
|
// from the gdb console, or else we will try to re-install it (bug 433044)
|
||||||
|
removeAllTargetFilters(dmc, breakpoint);
|
||||||
|
|
||||||
// Remove breakpoint problem marker (if any)
|
// Remove breakpoint problem marker (if any)
|
||||||
removeBreakpointProblemMarker(breakpoint);
|
removeBreakpointProblemMarker(breakpoint);
|
||||||
|
|
||||||
|
@ -1506,6 +1511,19 @@ public class MIBreakpointsManager extends AbstractDsfService implements IBreakpo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void removeAllTargetFilters(IBreakpointsTargetDMContext bpTargetDmc, ICBreakpoint breakpoint) {
|
||||||
|
try {
|
||||||
|
IDsfBreakpointExtension filterExt = getFilterExtension(breakpoint);
|
||||||
|
IContainerDMContext[] targets = filterExt.getTargetFilters();
|
||||||
|
for (IContainerDMContext target : targets) {
|
||||||
|
if (bpTargetDmc.equals(target) || DMContexts.isAncestorOf(target, bpTargetDmc)) {
|
||||||
|
filterExt.removeTargetFilter(target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (CoreException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
// Session exit
|
// Session exit
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
|
|
|
@ -289,6 +289,14 @@ public class GDBConsoleBreakpointsTest extends BaseTestCase {
|
||||||
Assert.assertTrue(plBpt instanceof CBreakpoint);
|
Assert.assertTrue(plBpt instanceof CBreakpoint);
|
||||||
waitForInstallCountChange((CBreakpoint)plBpt, 0);
|
waitForInstallCountChange((CBreakpoint)plBpt, 0);
|
||||||
|
|
||||||
|
// Make sure the breakpoint does not get re-installed
|
||||||
|
// once it gets a notification that the platform bp changed
|
||||||
|
// (through its install count changing) Bug 433044
|
||||||
|
// Give it some time and verify that it is still 0.
|
||||||
|
Thread.sleep(3000); // One second was not enough
|
||||||
|
Assert.assertTrue("Install count no longer 0",
|
||||||
|
((CBreakpoint)plBpt).getInstallCount() == 0);
|
||||||
|
|
||||||
// Set the console breakpoint again and verify that
|
// Set the console breakpoint again and verify that
|
||||||
// the install count of the platform breakpoint is 1
|
// the install count of the platform breakpoint is 1
|
||||||
// for installed breakpoints and 0 for pending breakpoints.
|
// for installed breakpoints and 0 for pending breakpoints.
|
||||||
|
|
Loading…
Add table
Reference in a new issue