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:
parent
6b0a5f2fc8
commit
5d50a256ac
2 changed files with 16 additions and 1 deletions
|
@ -21,6 +21,7 @@ import java.util.concurrent.TimeUnit;
|
||||||
import org.eclipse.dd.dsf.concurrent.DataRequestMonitor;
|
import org.eclipse.dd.dsf.concurrent.DataRequestMonitor;
|
||||||
import org.eclipse.dd.dsf.concurrent.DsfRunnable;
|
import org.eclipse.dd.dsf.concurrent.DsfRunnable;
|
||||||
import org.eclipse.dd.dsf.concurrent.RequestMonitor;
|
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.datamodel.IDMEvent;
|
||||||
import org.eclipse.dd.dsf.debug.internal.DsfDebugPlugin;
|
import org.eclipse.dd.dsf.debug.internal.DsfDebugPlugin;
|
||||||
import org.eclipse.dd.dsf.debug.service.IRunControl.IExecutionDMContext;
|
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.
|
* Returns whether the step instruction for the given context has timed out.
|
||||||
*/
|
*/
|
||||||
public boolean isSteppingTimedOut(IExecutionDMContext execCtx) {
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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.IResumedDMEvent;
|
||||||
import org.eclipse.dd.dsf.debug.service.IRunControl.ISuspendedDMEvent;
|
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.IRunControl.StateChangeReason;
|
||||||
|
import org.eclipse.dd.dsf.debug.service.StepQueueManager.ISteppingTimedOutEvent;
|
||||||
import org.eclipse.dd.dsf.internal.ui.DsfUIPlugin;
|
import org.eclipse.dd.dsf.internal.ui.DsfUIPlugin;
|
||||||
import org.eclipse.dd.dsf.service.DsfSession;
|
import org.eclipse.dd.dsf.service.DsfSession;
|
||||||
import org.eclipse.dd.dsf.ui.concurrent.ViewerDataRequestMonitor;
|
import org.eclipse.dd.dsf.ui.concurrent.ViewerDataRequestMonitor;
|
||||||
|
@ -118,6 +119,14 @@ public class ThreadVMNode extends AbstractDMVMNode
|
||||||
rm.done();
|
rm.done();
|
||||||
return;
|
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) {
|
} else if (e instanceof ModelProxyInstalledEvent) {
|
||||||
getThreadVMCForModelProxyInstallEvent(
|
getThreadVMCForModelProxyInstallEvent(
|
||||||
parentDelta,
|
parentDelta,
|
||||||
|
|
Loading…
Add table
Reference in a new issue