diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/MIRunControlEventProcessor.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/MIRunControlEventProcessor.java index 928ed6ddc4a..d9f37479f29 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/MIRunControlEventProcessor.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/MIRunControlEventProcessor.java @@ -14,6 +14,8 @@ package org.eclipse.cdt.dsf.mi.service.command; import java.util.LinkedList; import java.util.List; +import org.eclipse.cdt.dsf.datamodel.DMContexts; +import org.eclipse.cdt.dsf.datamodel.IDMContext; import org.eclipse.cdt.dsf.debug.service.IRunControl; import org.eclipse.cdt.dsf.debug.service.IProcesses.IProcessDMContext; import org.eclipse.cdt.dsf.debug.service.IProcesses.IThreadDMContext; @@ -291,16 +293,23 @@ public class MIRunControlEventProcessor // MIStoppedEvent ourselves if (cmd instanceof CLICommand) { IRunControl runControl = fServicesTracker.getService(IRunControl.class); - IMIProcesses procService = fServicesTracker.getService(IMIProcesses.class); - if (runControl != null && procService != null) { - String groupId = MIProcesses.UNIQUE_GROUP_ID; - IProcessDMContext procDmc = procService.createProcessContext(fControlDmc, groupId); - IContainerDMContext processContainerDmc = procService.createContainerContext(procDmc, groupId); - - if (runControl.isSuspended(processContainerDmc) == false) { - MIEvent event = MIStoppedEvent.parse(processContainerDmc, id, rr.getMIResults()); + if (runControl != null) { + IDMContext dmc = ((CLICommand)cmd).getContext(); + IExecutionDMContext execDmc = + DMContexts.getAncestorOfType(dmc, IExecutionDMContext.class); + + if (execDmc == null) { + IMIProcesses procService = fServicesTracker.getService(IMIProcesses.class); + if (procService != null) { + String groupId = MIProcesses.UNIQUE_GROUP_ID; + IProcessDMContext procDmc = procService.createProcessContext(fControlDmc, groupId); + execDmc = procService.createContainerContext(procDmc, groupId); + } + } + if (execDmc != null && runControl.isSuspended(execDmc) == false) { + MIEvent event = MIStoppedEvent.parse(execDmc, id, rr.getMIResults()); fCommandControl.getSession().dispatchEvent(event, fCommandControl.getProperties()); - } + } } } }