From 763aebdd14be8ff851665d3926bb58810c4b151f Mon Sep 17 00:00:00 2001 From: Marc Khouzam Date: Thu, 6 Sep 2012 21:03:52 -0400 Subject: [PATCH] Bug 388793: Breakpoint actions do not work with non-stop mode Change-Id: I18180149199819106909d5f3db51dd7270bf9937 --- .../.settings/.api_filters | 11 +++++ .../META-INF/MANIFEST.MF | 2 +- dsf-gdb/org.eclipse.cdt.dsf.gdb/pom.xml | 2 +- .../dsf/mi/service/MIBreakpointsManager.java | 41 +++++++++++++------ 4 files changed, 41 insertions(+), 15 deletions(-) create mode 100644 dsf-gdb/org.eclipse.cdt.dsf.gdb/.settings/.api_filters diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/.settings/.api_filters b/dsf-gdb/org.eclipse.cdt.dsf.gdb/.settings/.api_filters new file mode 100644 index 00000000000..e6b5c7de505 --- /dev/null +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/.settings/.api_filters @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/META-INF/MANIFEST.MF b/dsf-gdb/org.eclipse.cdt.dsf.gdb/META-INF/MANIFEST.MF index 4e896ba4dc2..d7c953ad535 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/META-INF/MANIFEST.MF +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/META-INF/MANIFEST.MF @@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-Vendor: %providerName Bundle-SymbolicName: org.eclipse.cdt.dsf.gdb;singleton:=true -Bundle-Version: 4.1.0.qualifier +Bundle-Version: 4.1.1.qualifier Bundle-Activator: org.eclipse.cdt.dsf.gdb.internal.GdbPlugin Bundle-Localization: plugin Require-Bundle: org.eclipse.core.runtime, diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/pom.xml b/dsf-gdb/org.eclipse.cdt.dsf.gdb/pom.xml index de9fb7ee0d0..44ff0c8ce1c 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/pom.xml +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/pom.xml @@ -11,7 +11,7 @@ ../../pom.xml - 4.1.0-SNAPSHOT + 4.1.1-SNAPSHOT org.eclipse.cdt.dsf.gdb eclipse-plugin 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 d9f92ccf869..c7b2a6565ce 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 @@ -54,6 +54,7 @@ import org.eclipse.cdt.dsf.debug.service.IDsfBreakpointExtension; import org.eclipse.cdt.dsf.debug.service.IRunControl; import org.eclipse.cdt.dsf.debug.service.IRunControl.IContainerDMContext; import org.eclipse.cdt.dsf.debug.service.IRunControl.IExecutionDMContext; +import org.eclipse.cdt.dsf.debug.service.IRunControl.ISuspendedDMEvent; import org.eclipse.cdt.dsf.debug.service.ISourceLookup; import org.eclipse.cdt.dsf.debug.service.ISourceLookup.ISourceLookupDMContext; import org.eclipse.cdt.dsf.debug.service.command.ICommandControl; @@ -65,6 +66,7 @@ import org.eclipse.cdt.dsf.mi.service.MIBreakpoints.BreakpointUpdatedEvent; import org.eclipse.cdt.dsf.mi.service.MIBreakpoints.MIBreakpointDMContext; import org.eclipse.cdt.dsf.mi.service.MIRunControl.SuspendedEvent; import org.eclipse.cdt.dsf.mi.service.breakpoint.actions.BreakpointActionAdapter; +import org.eclipse.cdt.dsf.mi.service.command.events.IMIDMEvent; import org.eclipse.cdt.dsf.mi.service.command.events.MIBreakpointHitEvent; import org.eclipse.cdt.dsf.mi.service.command.events.MIWatchpointScopeEvent; import org.eclipse.cdt.dsf.mi.service.command.events.MIWatchpointTriggerEvent; @@ -1340,21 +1342,34 @@ public class MIBreakpointsManager extends AbstractDsfService implements IBreakpo // Breakpoint actions //------------------------------------------------------------------------- + /** @since 4.1 */ @DsfServiceEventHandler + public void eventDispatched(ISuspendedDMEvent e) { + assert e instanceof IMIDMEvent; + if (e instanceof IMIDMEvent) { + Object miEvent = ((IMIDMEvent)e).getMIEvent(); + + if (miEvent instanceof MIBreakpointHitEvent) { + // This covers catchpoints, too + MIBreakpointHitEvent evt = (MIBreakpointHitEvent)miEvent; + performBreakpointAction(evt.getDMContext(), evt.getNumber()); + return; + } + + if (miEvent instanceof MIWatchpointTriggerEvent) { + MIWatchpointTriggerEvent evt = (MIWatchpointTriggerEvent)miEvent; + performBreakpointAction(evt.getDMContext(), evt.getNumber()); + return; + } + } + } + + /** + * @deprecated Replaced by the generic {@link #eventDispatched(ISuspendedDMEvent)} + */ + @Deprecated + @DsfServiceEventHandler public void eventDispatched(SuspendedEvent e) { - - if (e.getMIEvent() instanceof MIBreakpointHitEvent) { - // This covers catchpoints, too - MIBreakpointHitEvent evt = (MIBreakpointHitEvent) e.getMIEvent(); - performBreakpointAction(evt.getDMContext(), evt.getNumber()); - return; - } - - if (e.getMIEvent() instanceof MIWatchpointTriggerEvent) { - MIWatchpointTriggerEvent evt = (MIWatchpointTriggerEvent) e.getMIEvent(); - performBreakpointAction(evt.getDMContext(), evt.getNumber()); - return; - } } private void performBreakpointAction(final IDMContext context, int number) {