mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
More implementation.
This commit is contained in:
parent
7ce1db8c1d
commit
b0b0574436
5 changed files with 225 additions and 185 deletions
|
@ -1,149 +0,0 @@
|
|||
/*
|
||||
*(c) Copyright QNX Software Systems Ltd. 2002.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
*/
|
||||
|
||||
package org.eclipse.cdt.debug.internal.core;
|
||||
|
||||
import org.eclipse.cdt.debug.core.cdi.ICSession;
|
||||
|
||||
/**
|
||||
*
|
||||
* Provides the convenience access methods to the configuration
|
||||
* parameters of the debug session.
|
||||
*
|
||||
* @since Aug 6, 2002
|
||||
*/
|
||||
public class CDebugConfiguration
|
||||
{
|
||||
private ICSession fSession;
|
||||
|
||||
/**
|
||||
* Constructor for CDebugConfiguration.
|
||||
*/
|
||||
public CDebugConfiguration( ICSession session )
|
||||
{
|
||||
fSession = session;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this session supports termination.
|
||||
*
|
||||
* @return whether this session supports termination
|
||||
*/
|
||||
public boolean supportsTerminate()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this session supports disconnecting.
|
||||
*
|
||||
* @return whether this session supports disconnecting
|
||||
*/
|
||||
public boolean supportsDisconnect()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this session supports suspend/resume.
|
||||
*
|
||||
* @return whether this session supports suspend/resume
|
||||
*/
|
||||
public boolean supportsSuspendResume()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this session supports restarting.
|
||||
*
|
||||
* @return whether this session supports restarting
|
||||
*/
|
||||
public boolean supportsRestart()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this session supports stepping.
|
||||
*
|
||||
* @return whether this session supports stepping
|
||||
*/
|
||||
public boolean supportsStepping()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this session supports instruction stepping.
|
||||
*
|
||||
* @return whether this session supports instruction stepping
|
||||
*/
|
||||
public boolean supportsInstructionStepping()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this session supports breakpoints.
|
||||
*
|
||||
* @return whether this session supports breakpoints
|
||||
*/
|
||||
public boolean supportsBreakpoints()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this session supports registers.
|
||||
*
|
||||
* @return whether this session supports registers
|
||||
*/
|
||||
public boolean supportsRegisters()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this session supports register modification.
|
||||
*
|
||||
* @return whether this session supports registers modification
|
||||
*/
|
||||
public boolean supportsRegisterModification()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this session supports memory retrieval.
|
||||
*
|
||||
* @return whether this session supports memory retrieval
|
||||
*/
|
||||
public boolean supportsMemoryRetrieval()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this session supports memory modification.
|
||||
*
|
||||
* @return whether this session supports memory modification
|
||||
*/
|
||||
public boolean supportsMemoryModification()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether this session supports expression evaluation.
|
||||
*
|
||||
* @return whether this session supports expression evaluation
|
||||
*/
|
||||
public boolean supportsExpressionEvaluation()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -13,11 +13,11 @@ import java.util.List;
|
|||
import org.eclipse.cdt.debug.core.CDebugModel;
|
||||
import org.eclipse.cdt.debug.core.IFormattedMemoryBlock;
|
||||
import org.eclipse.cdt.debug.core.IFormattedMemoryRetrieval;
|
||||
import org.eclipse.cdt.debug.core.IInstructionStep;
|
||||
import org.eclipse.cdt.debug.core.IRestart;
|
||||
import org.eclipse.cdt.debug.core.IState;
|
||||
import org.eclipse.cdt.debug.core.cdi.CDIException;
|
||||
import org.eclipse.cdt.debug.core.cdi.ICBreakpoint;
|
||||
import org.eclipse.cdt.debug.core.cdi.ICDebugConfiguration;
|
||||
import org.eclipse.cdt.debug.core.cdi.ICEndSteppingRange;
|
||||
import org.eclipse.cdt.debug.core.cdi.ICSessionObject;
|
||||
import org.eclipse.cdt.debug.core.cdi.ICSignal;
|
||||
|
@ -47,7 +47,6 @@ import org.eclipse.debug.core.model.IBreakpoint;
|
|||
import org.eclipse.debug.core.model.IDebugTarget;
|
||||
import org.eclipse.debug.core.model.IMemoryBlock;
|
||||
import org.eclipse.debug.core.model.IProcess;
|
||||
import org.eclipse.debug.core.model.IStep;
|
||||
import org.eclipse.debug.core.model.IThread;
|
||||
|
||||
/**
|
||||
|
@ -119,7 +118,7 @@ public class CDebugTarget extends CDebugElement
|
|||
/**
|
||||
* The debug configuration of this session
|
||||
*/
|
||||
private CDebugConfiguration fConfig;
|
||||
private ICDebugConfiguration fConfig;
|
||||
|
||||
/**
|
||||
* Whether terminate is supported.
|
||||
|
@ -159,7 +158,7 @@ public class CDebugTarget extends CDebugElement
|
|||
setName( name );
|
||||
setProcess( process );
|
||||
setCDITarget( cdiTarget );
|
||||
fConfig = new CDebugConfiguration( cdiTarget.getSession() );
|
||||
fConfig = cdiTarget.getSession().getConfiguration();
|
||||
fSupportsTerminate = allowsTerminate & fConfig.supportsTerminate();
|
||||
fSupportsDisconnect = allowsDisconnect & fConfig.supportsDisconnect();
|
||||
setThreadList( new ArrayList( 5 ) );
|
||||
|
|
|
@ -23,6 +23,10 @@ public class CLocalVariable extends CDebugElement
|
|||
implements IVariable,
|
||||
ICEventListener
|
||||
{
|
||||
/**
|
||||
* Underlying CDI variable.
|
||||
*/
|
||||
private ICVariable fCDIVariable;
|
||||
|
||||
/**
|
||||
* Constructor for CLocalVariable.
|
||||
|
@ -31,6 +35,7 @@ public class CLocalVariable extends CDebugElement
|
|||
public CLocalVariable( CStackFrame stackFrame, ICVariable cdiVariable )
|
||||
{
|
||||
super( (CDebugTarget)stackFrame.getDebugTarget() );
|
||||
fCDIVariable = cdiVariable;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -109,4 +114,15 @@ public class CLocalVariable extends CDebugElement
|
|||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the underlying CDI variable that this model object is
|
||||
* a proxy to.
|
||||
*
|
||||
* @return the underlying CDI variable
|
||||
*/
|
||||
protected ICVariable getCDIVariable()
|
||||
{
|
||||
return fCDIVariable;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,13 +7,17 @@ package org.eclipse.cdt.debug.internal.core;
|
|||
|
||||
import java.text.MessageFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.cdt.debug.core.cdi.CDIException;
|
||||
import org.eclipse.cdt.debug.core.cdi.ICLocation;
|
||||
import org.eclipse.cdt.debug.core.cdi.event.ICEvent;
|
||||
import org.eclipse.cdt.debug.core.cdi.event.ICEventListener;
|
||||
import org.eclipse.cdt.debug.core.cdi.model.ICArgument;
|
||||
import org.eclipse.cdt.debug.core.cdi.model.ICObject;
|
||||
import org.eclipse.cdt.debug.core.cdi.model.ICStackFrame;
|
||||
import org.eclipse.cdt.debug.core.cdi.model.ICVariable;
|
||||
import org.eclipse.debug.core.DebugException;
|
||||
|
@ -37,6 +41,11 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
private ICStackFrame fCDIStackFrame;
|
||||
|
||||
/**
|
||||
* The last (previous) CDI stack frame.
|
||||
*/
|
||||
private ICStackFrame fLastCDIStackFrame;
|
||||
|
||||
/**
|
||||
* Containing thread.
|
||||
*/
|
||||
|
@ -85,9 +94,13 @@ public class CStackFrame extends CDebugElement
|
|||
{
|
||||
if ( fVariables == null )
|
||||
{
|
||||
fVariables = new ArrayList();
|
||||
fVariables.addAll( getCDIArguments() );
|
||||
fVariables.addAll( getCDILocalVariables() );
|
||||
List vars = getAllCDIVariables();
|
||||
fVariables = new ArrayList( vars.size() );
|
||||
Iterator it = vars.iterator();
|
||||
while( it.hasNext() )
|
||||
{
|
||||
fVariables.add( new CLocalVariable( this, (ICVariable)it.next() ) );
|
||||
}
|
||||
}
|
||||
else if ( fRefreshVariables )
|
||||
{
|
||||
|
@ -98,11 +111,38 @@ public class CStackFrame extends CDebugElement
|
|||
}
|
||||
|
||||
/**
|
||||
* Incrementally updates this stack frames variables.
|
||||
* Incrementally updates this stack frame's variables.
|
||||
*
|
||||
*/
|
||||
protected void updateVariables() throws DebugException
|
||||
{
|
||||
List locals = null;
|
||||
locals = getAllCDIVariables();
|
||||
int localIndex = -1;
|
||||
int index = 0;
|
||||
while( index < fVariables.size() )
|
||||
{
|
||||
CLocalVariable local = (CLocalVariable)fVariables.get( index );
|
||||
localIndex = locals.indexOf( local.getCDIVariable() );
|
||||
if ( localIndex >= 0 )
|
||||
{
|
||||
// update variable with new underling CDI LocalVariable
|
||||
locals.remove( localIndex );
|
||||
index++;
|
||||
}
|
||||
else
|
||||
{
|
||||
// remove variable
|
||||
fVariables.remove( index );
|
||||
}
|
||||
}
|
||||
|
||||
// add any new locals
|
||||
Iterator newOnes = locals.iterator();
|
||||
while( newOnes.hasNext() )
|
||||
{
|
||||
fVariables.add( new CLocalVariable( this, (ICVariable)newOnes.next() ) );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -128,7 +168,15 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
public int getLineNumber() throws DebugException
|
||||
{
|
||||
return 0;
|
||||
if ( isSuspended() )
|
||||
{
|
||||
ICLocation location = getCDIStackFrame().getLocation();
|
||||
if ( location != null )
|
||||
{
|
||||
return location.getLineNumber();
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -136,7 +184,7 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
public int getCharStart() throws DebugException
|
||||
{
|
||||
return 0;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -144,7 +192,7 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
public int getCharEnd() throws DebugException
|
||||
{
|
||||
return 0;
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -160,7 +208,7 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
public IRegisterGroup[] getRegisterGroups() throws DebugException
|
||||
{
|
||||
return null;
|
||||
return new IRegisterGroup[0];
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -168,13 +216,13 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
public boolean hasRegisterGroups() throws DebugException
|
||||
{
|
||||
return false;
|
||||
return getRegisterGroups().length > 0;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.debug.core.cdi.event.ICEventListener#handleDebugEvent(ICEvent)
|
||||
*/
|
||||
public void handleDebugEvent(ICEvent event)
|
||||
public void handleDebugEvent( ICEvent event )
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -183,7 +231,15 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
public boolean canStepInto()
|
||||
{
|
||||
return false;
|
||||
try
|
||||
{
|
||||
return exists() && isTopStackFrame() && getThread().canStepInto();
|
||||
}
|
||||
catch( DebugException e )
|
||||
{
|
||||
logError( e );
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -191,7 +247,15 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
public boolean canStepOver()
|
||||
{
|
||||
return false;
|
||||
try
|
||||
{
|
||||
return exists() && getThread().canStepOver();
|
||||
}
|
||||
catch( DebugException e )
|
||||
{
|
||||
logError( e );
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -199,6 +263,24 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
public boolean canStepReturn()
|
||||
{
|
||||
try
|
||||
{
|
||||
if ( !exists() )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
List frames = ((CThread)getThread()).computeStackFrames();
|
||||
if ( frames != null && !frames.isEmpty() )
|
||||
{
|
||||
boolean bottomFrame = this.equals( frames.get( frames.size() - 1 ) );
|
||||
boolean aboveObsoleteFrame = false;
|
||||
return !bottomFrame && getThread().canStepReturn();
|
||||
}
|
||||
}
|
||||
catch( DebugException e )
|
||||
{
|
||||
logError( e );
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -207,7 +289,7 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
public boolean isStepping()
|
||||
{
|
||||
return false;
|
||||
return getThread().isStepping();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -215,6 +297,11 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
public void stepInto() throws DebugException
|
||||
{
|
||||
if ( !canStepInto() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
getThread().stepInto();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -222,6 +309,18 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
public void stepOver() throws DebugException
|
||||
{
|
||||
if ( !canStepOver() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
if ( isTopStackFrame() )
|
||||
{
|
||||
getThread().stepOver();
|
||||
}
|
||||
else
|
||||
{
|
||||
((CThread)getThread()).stepToFrame( this );
|
||||
}
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -229,6 +328,24 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
public void stepReturn() throws DebugException
|
||||
{
|
||||
if ( !canStepReturn() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
if ( isTopStackFrame() )
|
||||
{
|
||||
getThread().stepReturn();
|
||||
}
|
||||
else
|
||||
{
|
||||
List frames = ((CThread)getThread()).computeStackFrames();
|
||||
int index = frames.indexOf( this );
|
||||
if ( index >= 0 && index < frames.size() - 1 )
|
||||
{
|
||||
IStackFrame nextFrame = (IStackFrame)frames.get( index + 1 );
|
||||
((CThread)getThread()).stepToFrame( nextFrame );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -236,7 +353,7 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
public boolean canResume()
|
||||
{
|
||||
return false;
|
||||
return getThread().canResume();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -244,7 +361,7 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
public boolean canSuspend()
|
||||
{
|
||||
return false;
|
||||
return getThread().canSuspend();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -252,7 +369,7 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
public boolean isSuspended()
|
||||
{
|
||||
return false;
|
||||
return getThread().isSuspended();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -260,6 +377,7 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
public void resume() throws DebugException
|
||||
{
|
||||
getThread().resume();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -267,6 +385,7 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
public void suspend() throws DebugException
|
||||
{
|
||||
getThread().suspend();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -274,7 +393,16 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
public boolean canTerminate()
|
||||
{
|
||||
return false;
|
||||
boolean exists = false;
|
||||
try
|
||||
{
|
||||
exists = exists();
|
||||
}
|
||||
catch( DebugException e )
|
||||
{
|
||||
logError( e );
|
||||
}
|
||||
return exists && getThread().canTerminate() || getDebugTarget().canTerminate();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -282,7 +410,7 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
public boolean isTerminated()
|
||||
{
|
||||
return false;
|
||||
return getThread().isTerminated();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -290,6 +418,14 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
public void terminate() throws DebugException
|
||||
{
|
||||
if ( getThread().canTerminate() )
|
||||
{
|
||||
getThread().terminate();
|
||||
}
|
||||
else
|
||||
{
|
||||
getDebugTarget().terminate();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -311,6 +447,16 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
protected void setCDIStackFrame( ICStackFrame frame )
|
||||
{
|
||||
if ( frame != null )
|
||||
{
|
||||
fLastCDIStackFrame = frame;
|
||||
}
|
||||
else
|
||||
{
|
||||
fLastCDIStackFrame = fCDIStackFrame;
|
||||
}
|
||||
fCDIStackFrame = frame;
|
||||
fRefreshVariables = true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -320,7 +466,7 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
protected ICStackFrame getLastCDIStackFrame()
|
||||
{
|
||||
return null;
|
||||
return fLastCDIStackFrame;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -330,7 +476,8 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
protected static boolean equalFrame( ICStackFrame frameOne, ICStackFrame frameTwo )
|
||||
{
|
||||
return false;
|
||||
return ( frameOne.getParent().equals( frameTwo.getParent() ) &&
|
||||
frameOne.getLocation().equals( frameTwo.getLocation() ) );
|
||||
}
|
||||
|
||||
protected boolean exists() throws DebugException
|
||||
|
@ -366,13 +513,10 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
protected List getCDILocalVariables() throws DebugException
|
||||
{
|
||||
List list = Collections.EMPTY_LIST;
|
||||
List list = new ArrayList();
|
||||
try
|
||||
{
|
||||
ICVariable[] vars = getCDIStackFrame().getLocalVariables();
|
||||
list = new ArrayList( vars.length );
|
||||
for ( int i = 0; i < vars.length; ++i )
|
||||
list.add( new CLocalVariable( this, vars[i] ) );
|
||||
list.add( Arrays.asList( getCDIStackFrame().getLocalVariables() ) );
|
||||
}
|
||||
catch( CDIException e )
|
||||
{
|
||||
|
@ -388,18 +532,29 @@ public class CStackFrame extends CDebugElement
|
|||
*/
|
||||
protected List getCDIArguments() throws DebugException
|
||||
{
|
||||
List list = Collections.EMPTY_LIST;
|
||||
List list = new ArrayList();
|
||||
try
|
||||
{
|
||||
ICArgument[] args = getCDIStackFrame().getArguments();
|
||||
list = new ArrayList( args.length );
|
||||
for ( int i = 0; i < args.length; ++i )
|
||||
list.add( new CLocalVariable( this, args[i] ) );
|
||||
list.add( Arrays.asList( getCDIStackFrame().getArguments() ) );
|
||||
}
|
||||
catch( CDIException e )
|
||||
{
|
||||
targetRequestFailed( MessageFormat.format( "{0} occurred retrieving arguments", new String[] { e.toString() } ), e );
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
protected List getAllCDIVariables() throws DebugException
|
||||
{
|
||||
List list = new ArrayList();
|
||||
list.add( getCDIArguments() );
|
||||
list.add( getCDILocalVariables() );
|
||||
return list;
|
||||
}
|
||||
|
||||
protected boolean isTopStackFrame() throws DebugException
|
||||
{
|
||||
IStackFrame tos = getThread().getTopStackFrame();
|
||||
return tos != null && tos.equals( this );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ import org.eclipse.cdt.debug.core.IInstructionStep;
|
|||
import org.eclipse.cdt.debug.core.IState;
|
||||
import org.eclipse.cdt.debug.core.cdi.CDIException;
|
||||
import org.eclipse.cdt.debug.core.cdi.ICBreakpoint;
|
||||
import org.eclipse.cdt.debug.core.cdi.ICDebugConfiguration;
|
||||
import org.eclipse.cdt.debug.core.cdi.ICEndSteppingRange;
|
||||
import org.eclipse.cdt.debug.core.cdi.ICSessionObject;
|
||||
import org.eclipse.cdt.debug.core.cdi.ICSignal;
|
||||
|
@ -83,7 +84,7 @@ public class CThread extends CDebugElement
|
|||
/**
|
||||
* The debug configuration of this session.
|
||||
*/
|
||||
private CDebugConfiguration fConfig;
|
||||
private ICDebugConfiguration fConfig;
|
||||
|
||||
/**
|
||||
* Constructor for CThread.
|
||||
|
@ -93,7 +94,7 @@ public class CThread extends CDebugElement
|
|||
{
|
||||
super( target );
|
||||
setCDIThread( cdiThread );
|
||||
fConfig = new CDebugConfiguration( getCDISession() );
|
||||
fConfig = getCDISession().getConfiguration();
|
||||
initialize();
|
||||
getCDISession().getEventManager().addEventListener( this );
|
||||
}
|
||||
|
@ -896,4 +897,22 @@ public class CThread extends CDebugElement
|
|||
getCDISession().getEventManager().removeEventListener( this );
|
||||
disposeStackFrames();
|
||||
}
|
||||
|
||||
/**
|
||||
* Steps until the specified stack frame is the top frame. Provides
|
||||
* ability to step over/return in the non-top stack frame.
|
||||
* This method is synchronized, such that the step request
|
||||
* begins before a background evaluation can be performed.
|
||||
*
|
||||
* @exception DebugException if this method fails. Reasons include:
|
||||
* <ul>
|
||||
* </ul>
|
||||
*/
|
||||
protected synchronized void stepToFrame( IStackFrame frame ) throws DebugException
|
||||
{
|
||||
if ( !canStepReturn() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue