diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIInferior.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIInferior.java index db1b8e973e4..20405fbbd87 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIInferior.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIInferior.java @@ -126,17 +126,17 @@ public class MIInferior extends Process { } } */ - if (!isSuspended()) - { - // interrupt execution - } - CommandFactory factory = session.getCommandFactory(); - MIGDBExit exit = factory.createMIGDBExit(); - try { - session.postCommand(exit); - setTerminated(); - session.getRxThread().fireEvent(new MIExitEvent()); - } catch (MIException e) { + if (!isTerminated()) { + if (!isSuspended()) + { + // interrupt execution + } + CommandFactory factory = session.getCommandFactory(); + MIGDBExit exit = factory.createMIGDBExit(); + try { + session.postCommand(exit); + } catch (MIException e) { + } } } diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/RxThread.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/RxThread.java index 9d9657e2533..cf2413b7174 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/RxThread.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/RxThread.java @@ -121,6 +121,7 @@ MIPlugin.getDefault().debugLog(line); fireEvent(event); } else if ("exit".equals(state)) { session.getMIInferior().setTerminated(); + fireEvent(new MIExitEvent()); } // Notify the waiting command. @@ -309,13 +310,13 @@ MIPlugin.getDefault().debugLog(line); event = new MIFunctionFinishedEvent(rr); } } else if ("exited-normally".equals(reason)) { - session.getMIInferior().setTerminated(); +// session.getMIInferior().setTerminated(); event = new MIInferiorExitEvent(); } else if ("exited-signalled".equals(reason)) { - session.getMIInferior().setTerminated(); +// session.getMIInferior().setTerminated(); event = new MIInferiorExitEvent(); } else if ("exited".equals(reason)) { - session.getMIInferior().setTerminated(); +// session.getMIInferior().setTerminated(); event = new MIInferiorExitEvent(); } return event;