diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses.java index 07f6120ad03..d6b40ea618b 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBProcesses.java @@ -505,6 +505,13 @@ public class GDBProcesses extends MIProcesses implements IGDBProcesses { * @since 4.0 */ protected void createConsole(final IContainerDMContext containerDmc, final boolean restart, final RequestMonitor rm) { + if (fBackend.getSessionType() == SessionType.REMOTE || fBackend.getIsAttachSession()) { + // Remote or attach sessions shouldn't have a console, since the inferior is not started + // by eclipse but by gdbserver + rm.done(); + return; + } + initializeInputOutput(containerDmc, new ImmediateRequestMonitor(rm) { @Override protected void handleSuccess() { diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/StartOrRestartProcessSequence_7_0.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/StartOrRestartProcessSequence_7_0.java index 7d6b2d065c0..43634a226f9 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/StartOrRestartProcessSequence_7_0.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/StartOrRestartProcessSequence_7_0.java @@ -295,6 +295,15 @@ public class StartOrRestartProcessSequence_7_0 extends ReflectionSequence { */ @Execute public void stepCreateConsole(final RequestMonitor rm) { + if (fBackend.getSessionType() == SessionType.REMOTE && !fBackend.getIsAttachSession()) { + // Remote non-attach sessions don't support multi-process and therefore will not + // start new processes. Those sessions will only start the one process, which should + // not have a console, because it's output is handled by GDB server. Therefore, + // no need to create an inferior process and add it to the launch + rm.done(); + return; + } + Process inferiorProcess; if (fPty == null) { inferiorProcess = new MIInferiorProcess(fContainerDmc, fBackend.getMIOutputStream());