mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
[214384] - [debug view] When a program runs to completion, the debug target still shows it as running.
This commit is contained in:
parent
3a557eade1
commit
6d882f8fb7
2 changed files with 24 additions and 22 deletions
|
@ -32,10 +32,9 @@ import org.eclipse.dd.gdb.internal.provisional.service.GDBRunControl.GDBProcessD
|
||||||
import org.eclipse.dd.gdb.internal.provisional.service.command.GDBControl;
|
import org.eclipse.dd.gdb.internal.provisional.service.command.GDBControl;
|
||||||
import org.eclipse.dd.gdb.internal.provisional.service.command.GDBControlDMContext;
|
import org.eclipse.dd.gdb.internal.provisional.service.command.GDBControlDMContext;
|
||||||
import org.eclipse.dd.gdb.internal.provisional.service.command.GDBControl.GDBStartedEvent;
|
import org.eclipse.dd.gdb.internal.provisional.service.command.GDBControl.GDBStartedEvent;
|
||||||
import org.eclipse.dd.mi.service.command.AbstractMIControl;
|
import org.eclipse.dd.mi.service.command.MIInferiorProcess;
|
||||||
import org.eclipse.dd.mi.service.command.MIControlDMContext;
|
import org.eclipse.dd.mi.service.command.MIInferiorProcess.InferiorExitedDMEvent;
|
||||||
import org.eclipse.dd.mi.service.command.events.MIInferiorExitEvent;
|
import org.eclipse.dd.mi.service.command.MIInferiorProcess.InferiorStartedDMEvent;
|
||||||
import org.eclipse.dd.mi.service.command.events.MIInferiorSignalExitEvent;
|
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenUpdate;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenUpdate;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementLabelProvider;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementLabelProvider;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.ILabelUpdate;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.ILabelUpdate;
|
||||||
|
@ -43,26 +42,29 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelDelta;
|
||||||
import org.eclipse.debug.ui.DebugUITools;
|
import org.eclipse.debug.ui.DebugUITools;
|
||||||
import org.eclipse.debug.ui.IDebugUIConstants;
|
import org.eclipse.debug.ui.IDebugUIConstants;
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings("restriction")
|
@SuppressWarnings("restriction")
|
||||||
public class ContainerVMNode extends AbstractDMVMNode
|
public class ContainerVMNode extends AbstractDMVMNode
|
||||||
implements IElementLabelProvider
|
implements IElementLabelProvider
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
public ContainerVMNode(AbstractDMVMProvider provider, DsfSession session) {
|
public ContainerVMNode(AbstractDMVMProvider provider, DsfSession session) {
|
||||||
super(provider, session, IRunControl.IExecutionDMContext.class);
|
super(provider, session, IRunControl.IExecutionDMContext.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void updateElementsInSessionThread(IChildrenUpdate update) {
|
protected void updateElementsInSessionThread(IChildrenUpdate update) {
|
||||||
|
GDBControl controlService = getServicesTracker().getService(GDBControl.class);
|
||||||
AbstractMIControl controlService = getServicesTracker().getService(AbstractMIControl.class);
|
|
||||||
if ( controlService == null ) {
|
if ( controlService == null ) {
|
||||||
handleFailedUpdate(update);
|
handleFailedUpdate(update);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
MIControlDMContext containerCtx = controlService.getControlDMContext();
|
MIInferiorProcess inferiorProcess = controlService.getInferiorProcess();
|
||||||
update.setChild(createVMContext(containerCtx), 0);
|
if (inferiorProcess != null && inferiorProcess.getState() != MIInferiorProcess.State.TERMINATED) {
|
||||||
|
update.setChild(createVMContext(inferiorProcess.getExecutionContext()), 0);
|
||||||
|
}
|
||||||
update.done();
|
update.done();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,14 +123,12 @@ public class ContainerVMNode extends AbstractDMVMNode
|
||||||
e instanceof IRunControl.IContainerSuspendedDMEvent)
|
e instanceof IRunControl.IContainerSuspendedDMEvent)
|
||||||
{
|
{
|
||||||
return IModelDelta.CONTENT;
|
return IModelDelta.CONTENT;
|
||||||
} else if (e instanceof GDBControl.GDBExitedEvent ||
|
} else if (e instanceof GDBControl.GDBExitedEvent || e instanceof InferiorExitedDMEvent) {
|
||||||
e instanceof MIInferiorExitEvent ||
|
|
||||||
e instanceof MIInferiorSignalExitEvent)
|
|
||||||
{
|
|
||||||
return IModelDelta.CONTENT;
|
return IModelDelta.CONTENT;
|
||||||
}
|
} else if (e instanceof GDBStartedEvent) {
|
||||||
if (e instanceof GDBStartedEvent) {
|
return IModelDelta.EXPAND;
|
||||||
return IModelDelta.EXPAND | IModelDelta.SELECT;
|
} else if (e instanceof InferiorStartedDMEvent) {
|
||||||
|
return IModelDelta.EXPAND | IModelDelta.SELECT;
|
||||||
}
|
}
|
||||||
return IModelDelta.NO_CHANGE;
|
return IModelDelta.NO_CHANGE;
|
||||||
}
|
}
|
||||||
|
@ -144,13 +144,11 @@ public class ContainerVMNode extends AbstractDMVMNode
|
||||||
if (containerCtx != null) {
|
if (containerCtx != null) {
|
||||||
parentDelta.addNode(createVMContext(containerCtx), IModelDelta.CONTENT);
|
parentDelta.addNode(createVMContext(containerCtx), IModelDelta.CONTENT);
|
||||||
}
|
}
|
||||||
} else if (e instanceof GDBControl.GDBExitedEvent ||
|
} else if (e instanceof GDBControl.GDBExitedEvent || e instanceof InferiorExitedDMEvent) {
|
||||||
e instanceof MIInferiorExitEvent ||
|
parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT);
|
||||||
e instanceof MIInferiorSignalExitEvent)
|
} else if (e instanceof GDBStartedEvent) {
|
||||||
{
|
parentDelta.addNode(createVMContext(((IDMEvent<?>)e).getDMContext()), IModelDelta.EXPAND);
|
||||||
parentDelta.addNode(createVMContext(((IDMEvent<?>)e).getDMContext()), IModelDelta.CONTENT);
|
} else if (e instanceof InferiorStartedDMEvent) {
|
||||||
}
|
|
||||||
if (e instanceof GDBStartedEvent) {
|
|
||||||
parentDelta.addNode(createVMContext(((IDMEvent<?>)e).getDMContext()), IModelDelta.EXPAND | IModelDelta.SELECT);
|
parentDelta.addNode(createVMContext(((IDMEvent<?>)e).getDMContext()), IModelDelta.EXPAND | IModelDelta.SELECT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -392,6 +392,10 @@ public class MIInferiorProcess extends Process
|
||||||
public State getState() {
|
public State getState() {
|
||||||
return fState;
|
return fState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IExecutionDMContext getExecutionContext() {
|
||||||
|
return fExecutionDMContext;
|
||||||
|
}
|
||||||
|
|
||||||
synchronized void setState(State state) {
|
synchronized void setState(State state) {
|
||||||
if (fState == State.TERMINATED) return;
|
if (fState == State.TERMINATED) return;
|
||||||
|
|
Loading…
Add table
Reference in a new issue