diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/CTarget.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/CTarget.java index 8e46a1e62e9..4e747fac56e 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/CTarget.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/CTarget.java @@ -33,6 +33,7 @@ import org.eclipse.cdt.debug.mi.core.command.MIExecStepInstruction; import org.eclipse.cdt.debug.mi.core.command.MIInfoThreads; import org.eclipse.cdt.debug.mi.core.command.MITargetDetach; import org.eclipse.cdt.debug.mi.core.command.MIThreadSelect; +import org.eclipse.cdt.debug.mi.core.event.MIDetachedEvent; import org.eclipse.cdt.debug.mi.core.event.MIThreadExitEvent; import org.eclipse.cdt.debug.mi.core.output.MIDataEvaluateExpressionInfo; import org.eclipse.cdt.debug.mi.core.output.MIDataListRegisterNamesInfo; @@ -359,11 +360,6 @@ public class CTarget implements ICDITarget { MICommand noop = new MICommand(""); try { mi.getMIInferior().interrupt(); - mi.postCommand(noop); - MIInfo info = noop.getMIInfo(); - if (info == null) { - throw new CDIException("No answer"); - } } catch (MIException e) { throw new CDIException(e.getMessage()); } @@ -385,6 +381,8 @@ public class CTarget implements ICDITarget { } catch (MIException e) { throw new CDIException(e.getMessage()); } + MISession miSession = session.getMISession(); + miSession.fireEvent(new MIDetachedEvent()); } /** diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/DisconnectedEvent.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/DisconnectedEvent.java new file mode 100644 index 00000000000..89917615f92 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/DisconnectedEvent.java @@ -0,0 +1,23 @@ +package org.eclipse.cdt.debug.mi.core.cdi; + +import org.eclipse.cdt.debug.core.cdi.event.ICDIDisconnectedEvent; +import org.eclipse.cdt.debug.core.cdi.model.ICDIObject; + +/** + */ +public class DisconnectedEvent implements ICDIDisconnectedEvent { + + ICDIObject source; + + public DisconnectedEvent(CSession session) { + source = (ICDIObject)session.getCTarget(); + } + + /** + * @see org.eclipse.cdt.debug.core..ICDIEvent#getSource() + */ + public ICDIObject getSource() { + return source; + } + +} diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java index 8b4861bcf6d..f44919071bd 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java @@ -16,6 +16,7 @@ import org.eclipse.cdt.debug.core.cdi.ICDIEventManager; import org.eclipse.cdt.debug.core.cdi.event.ICDIEvent; import org.eclipse.cdt.debug.core.cdi.event.ICDIEventListener; import org.eclipse.cdt.debug.mi.core.event.MIBreakpointEvent; +import org.eclipse.cdt.debug.mi.core.event.MIDetachedEvent; import org.eclipse.cdt.debug.mi.core.event.MIEvent; import org.eclipse.cdt.debug.mi.core.event.MIFunctionFinishedEvent; import org.eclipse.cdt.debug.mi.core.event.MIGDBExitEvent; @@ -63,6 +64,8 @@ public class EventManager extends SessionObject implements ICDIEventManager, Obs cdiEvent = new ExitedEvent(session, (MIInferiorExitEvent)miEvent); } else if (miEvent instanceof MIGDBExitEvent) { cdiEvent = new DestroyedEvent(session); + } else if (miEvent instanceof MIDetachedEvent) { + cdiEvent = new DisconnectedEvent(session); } // Fire the event; diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/event/MIDetachedEvent.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/event/MIDetachedEvent.java new file mode 100644 index 00000000000..faf7c76e164 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/event/MIDetachedEvent.java @@ -0,0 +1,28 @@ +/* + * (c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + * + */ +package org.eclipse.cdt.debug.mi.core.event; + +import org.eclipse.cdt.debug.mi.core.output.MIConst; +import org.eclipse.cdt.debug.mi.core.output.MIExecAsyncOutput; +import org.eclipse.cdt.debug.mi.core.output.MIFrame; +import org.eclipse.cdt.debug.mi.core.output.MIResult; +import org.eclipse.cdt.debug.mi.core.output.MIResultRecord; +import org.eclipse.cdt.debug.mi.core.output.MITuple; +import org.eclipse.cdt.debug.mi.core.output.MIValue; + +/** + * + * ^running + */ +public class MIDetachedEvent extends MIEvent { + + public MIDetachedEvent() { + } + + public String toString() { + return "Detached"; + } +}