diff --git a/debug/org.eclipse.cdt.debug.mi.core/ChangeLog b/debug/org.eclipse.cdt.debug.mi.core/ChangeLog index 3ae7a4ab2de..c444d588e11 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.mi.core/ChangeLog @@ -1,3 +1,7 @@ +2005-07-07 Alain Magloire + Try to suspend the target before disconnecting. + * cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java + 2005-06-29 Alain Magloire Fix PR 100602 * mi/org/eclipse/cdt/debug/mi/core/GDBTypeParser.java diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java index e4fe3a0a78e..438dc6b809e 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java +++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Target.java @@ -45,6 +45,7 @@ import org.eclipse.cdt.debug.mi.core.MISession; import org.eclipse.cdt.debug.mi.core.RxThread; import org.eclipse.cdt.debug.mi.core.cdi.BreakpointManager; import org.eclipse.cdt.debug.mi.core.cdi.CdiResources; +import org.eclipse.cdt.debug.mi.core.cdi.EventManager; import org.eclipse.cdt.debug.mi.core.cdi.ExpressionManager; import org.eclipse.cdt.debug.mi.core.cdi.MI2CDIException; import org.eclipse.cdt.debug.mi.core.cdi.MemoryManager; @@ -569,6 +570,15 @@ public class Target extends SessionObject implements ICDITarget { * @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#disconnect() */ public void disconnect() throws CDIException { + // if Target is running try to suspend first. + if (isRunning()) { + try { + ((EventManager)getSession().getEventManager()).allowProcessingEvents(false); + suspend(); + } finally { + ((EventManager)getSession().getEventManager()).allowProcessingEvents(true); + } + } CommandFactory factory = miSession.getCommandFactory(); MITargetDetach detach = factory.createMITargetDetach(); try {