1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-24 00:33:48 +02:00

[233339] - [debug view] When stepping over a long running operation stack frames do not change state to running.

This commit is contained in:
Pawel Piech 2008-05-21 20:43:52 +00:00
parent 6b0a5f2fc8
commit 5d50a256ac
2 changed files with 16 additions and 1 deletions

View file

@ -21,6 +21,7 @@ import java.util.concurrent.TimeUnit;
import org.eclipse.dd.dsf.concurrent.DataRequestMonitor;
import org.eclipse.dd.dsf.concurrent.DsfRunnable;
import org.eclipse.dd.dsf.concurrent.RequestMonitor;
import org.eclipse.dd.dsf.datamodel.DMContexts;
import org.eclipse.dd.dsf.datamodel.IDMEvent;
import org.eclipse.dd.dsf.debug.internal.DsfDebugPlugin;
import org.eclipse.dd.dsf.debug.service.IRunControl.IExecutionDMContext;
@ -168,7 +169,12 @@ public class StepQueueManager extends AbstractDsfService
* Returns whether the step instruction for the given context has timed out.
*/
public boolean isSteppingTimedOut(IExecutionDMContext execCtx) {
return fTimedOutFlags.containsKey(execCtx) ? fTimedOutFlags.get(execCtx) : false;
for (IExecutionDMContext timedOutCtx : fTimedOutFlags.keySet()) {
if (execCtx.equals(timedOutCtx) || DMContexts.isAncestorOf(execCtx, timedOutCtx)) {
return fTimedOutFlags.get(timedOutCtx);
}
}
return false;
}

View file

@ -32,6 +32,7 @@ import org.eclipse.dd.dsf.debug.service.IRunControl.IExecutionDMData;
import org.eclipse.dd.dsf.debug.service.IRunControl.IResumedDMEvent;
import org.eclipse.dd.dsf.debug.service.IRunControl.ISuspendedDMEvent;
import org.eclipse.dd.dsf.debug.service.IRunControl.StateChangeReason;
import org.eclipse.dd.dsf.debug.service.StepQueueManager.ISteppingTimedOutEvent;
import org.eclipse.dd.dsf.internal.ui.DsfUIPlugin;
import org.eclipse.dd.dsf.service.DsfSession;
import org.eclipse.dd.dsf.ui.concurrent.ViewerDataRequestMonitor;
@ -118,6 +119,14 @@ public class ThreadVMNode extends AbstractDMVMNode
rm.done();
return;
}
} else if (e instanceof ISteppingTimedOutEvent &&
((ISteppingTimedOutEvent)e).getDMContext() instanceof IContainerDMContext)
{
// The timed out event occured on a container and not on a thread. Do not
// return a context for this event, which will force the view model to generate
// a delta for all the threads.
rm.setStatus(new Status(IStatus.ERROR, DsfUIPlugin.PLUGIN_ID, IDsfStatusConstants.NOT_SUPPORTED, "", null)); //$NON-NLS-1$
rm.done();
} else if (e instanceof ModelProxyInstalledEvent) {
getThreadVMCForModelProxyInstallEvent(
parentDelta,