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 d49afc24e4d..b551506cdfb 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 @@ -13,10 +13,12 @@ import java.io.PipedOutputStream; import org.eclipse.cdt.debug.mi.core.command.CLICommand; import org.eclipse.cdt.debug.mi.core.command.CommandFactory; import org.eclipse.cdt.debug.mi.core.command.MIExecAbort; +import org.eclipse.cdt.debug.mi.core.command.MIExecInterrupt; import org.eclipse.cdt.debug.mi.core.command.MIGDBShowExitCode; import org.eclipse.cdt.debug.mi.core.event.MIInferiorExitEvent; import org.eclipse.cdt.debug.mi.core.output.MIGDBShowExitCodeInfo; import org.eclipse.cdt.debug.mi.core.output.MIInfo; +import org.eclipse.cdt.utils.spawner.Spawner; /** */ @@ -155,6 +157,23 @@ public class MIInferior extends Process { } } + public void interrupt() { + Process gdb = session.getMIProcess(); + if (gdb instanceof Spawner) { + Spawner gdbSpawner = (Spawner)gdb; + gdbSpawner.interrupt(); + } else { + // Try the exec-interrupt; + CommandFactory factory = session.getCommandFactory(); + MIExecInterrupt interrupt = factory.createMIExecInterrupt(); + try { + session.postCommand(interrupt); + MIInfo info = interrupt.getMIInfo(); + } catch (MIException e) { + } + } + } + public synchronized boolean isSuspended() { return state == SUSPENDED; }