Index:
ChangeLog =================================================================== RCS
file: /home/tools/org.eclipse.cdt.debug.core/ChangeLog,v retrieving revision
1.65 diff -u -r1.65 ChangeLog --- ChangeLog 28 Nov 2002 19:12:27
-0000 1.65 +++ ChangeLog 28 Nov 2002 23:40:01 -0000 @@ -1,4 +1,9
@@ 2002-11-28 Mikhail Khodjaiants + 'exec-until' instead of
temporary breakpoints for 'run to line'. + *
CDebugTarget.java + * CThread.java + +2002-11-28 Mikhail
Khodjaiants Live editing of the memory view: removed support of
the 'Save Changes' action. *
IFormattedMemoryBlock.java * CFormattedMemoryBlock.java Index:
src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java =================================================================== RCS
file:
/home/tools/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java,v retrieving
revision 1.56 diff -u -r1.56 CDebugTarget.java ---
src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java 27 Nov 2002
15:46:54 -0000 1.56 +++
src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java 28 Nov 2002
23:40:01 -0000 @@ -212,11 +212,6 @@ private List
fRegisterGroups; /** - * Collection of
temporary breakpoints set at this target. Values are of type
<code>ICBreakpoint</code>. - */ - private List
fTemporaryBreakpoints; - - /** * A memory manager for
this target. */ private CMemoryManager
fMemoryManager; @@ -253,7 +248,6 @@ setProcesses(
debuggeeProcess, debuggerProcess ); setCDITarget( cdiTarget
); setBreakpoints( new HashMap( 5 )
); - setTemporaryBreakpoints( new ArrayList()
); setExecFile( file ); if (
getExecFile() != null ) { @@ -849,6 +843,8
@@ return this; if (
adapter.equals( IExecFileInfo.class ) ) return
this; + if ( adapter.equals( IRunToLine.class )
) + return this; return
super.getAdapter( adapter ); } @@ -1197,28
+1193,6
@@ } } - /** - *
Removes all temporary breakpoints from this target. - * -
*/ - protected void
removeAllTemporaryBreakpoints() - { - ICDIBreakpoint[]
cdiBreakpoints = (ICDIBreakpoint[])getTemporaryBreakpoints().toArray( new
ICDIBreakpoint[0] ); - ICDIBreakpointManager bm =
getCDISession().getBreakpointManager(); - if (
cdiBreakpoints.length > 0
) - { - try - { - bm.deleteBreakpoints(
cdiBreakpoints
); - getTemporaryBreakpoints().clear(); - } - catch(
CDIException e ) - { - logError( e
); - } - } - } - protected
void changeBreakpointProperties( CBreakpoint breakpoint, IMarkerDelta delta )
throws DebugException { ICDIBreakpoint
cdiBreakpoint = findCDIBreakpoint( breakpoint ); @@ -1291,7 +1265,6
@@ setCurrentStateId( IState.SUSPENDED
); ICDISessionObject reason =
event.getReason(); setCurrentStateInfo( reason
); - removeAllTemporaryBreakpoints(); List
newThreads = refreshThreads(); if ( event.getSource()
instanceof ICDITarget ) { @@ -1578,24 +1551,6
@@ } /** - * Returns the list
of temporary breakpoints installed in this debug target. - *
- * @return list of installed temporary breakpoints -
*/ - protected List
getTemporaryBreakpoints() - { - return
fTemporaryBreakpoints; - } - - /** - * Uninstalles
all temporary breakpoints installed in this debug target. - *
- */ - protected void
deleteTemporaryBreakpoints() - { - } - - /**
* Sets the map of breakpoints installed in this debug target. *
* @param breakpoints breakpoints map @@ -1606,16 +1561,6
@@ } /** - * Sets the
list of temporary breakpoints installed in this debug target. - *
- * @param breakpoints breakpoints list -
*/ - private void setTemporaryBreakpoints( List breakpoints
) - { - fTemporaryBreakpoints =
breakpoints; - } - - /** * Returns the
debug configuration of this target. * * @return
the debug configuration of this target @@ -1805,12 +1750,10
@@ { try { - ICDIBreakpoint
bkpt =
getCDISession().getBreakpointManager(). - setLocationBreakpoint(
ICDIBreakpoint.REGULAR,
//ICDIBreakpoint.TEMPORARY, -
location, -
null, -
null ); - getTemporaryBreakpoints().add( bkpt
); + getCDISession().getBreakpointManager().setLocationBreakpoint(
ICDIBreakpoint.TEMPORARY, +
location, +
null, +
null ); } catch( CDIException e
) { @@ -1833,11 +1776,16 @@ public void
runToLine( IResource resource, int lineNumber ) throws
DebugException { if ( !canRunToLine(
resource, lineNumber )
) - { return; + ICDILocation
location = getCDISession().getBreakpointManager().createLocation(
resource.getLocation().lastSegment(), null, lineNumber
); + try + { + getCDITarget().runUntil(
location ); + } + catch( CDIException e
) + { + targetRequestFailed( e.toString(), e
); } - setInternalTemporaryBreakpoint(
getCDISession().getBreakpointManager().createLocation(
resource.getLocation().lastSegment(), null, lineNumber )
); - resume(); } /*
(non-Javadoc) Index:
src/org/eclipse/cdt/debug/internal/core/model/CThread.java =================================================================== RCS
file:
/home/tools/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CThread.java,v retrieving
revision 1.18 diff -u -r1.18 CThread.java ---
src/org/eclipse/cdt/debug/internal/core/model/CThread.java 16 Nov 2002
00:48:31 -0000 1.18 +++
src/org/eclipse/cdt/debug/internal/core/model/CThread.java 28 Nov 2002
23:40:01 -0000 @@ -13,11 +13,13 @@ import
org.eclipse.cdt.debug.core.IDummyStackFrame; import
org.eclipse.cdt.debug.core.IInstructionStep; import
org.eclipse.cdt.debug.core.IRestart; +import
org.eclipse.cdt.debug.core.IRunToLine; import
org.eclipse.cdt.debug.core.IState; import
org.eclipse.cdt.debug.core.ISwitchToFrame; import
org.eclipse.cdt.debug.core.cdi.CDIException; import
org.eclipse.cdt.debug.core.cdi.ICDIConfiguration; import
org.eclipse.cdt.debug.core.cdi.ICDIEndSteppingRange; +import
org.eclipse.cdt.debug.core.cdi.ICDILocation; import
org.eclipse.cdt.debug.core.cdi.ICDISessionObject; import
org.eclipse.cdt.debug.core.cdi.ICDISignal; import
org.eclipse.cdt.debug.core.cdi.event.ICDIChangedEvent; @@ -33,6 +35,7
@@ import
org.eclipse.cdt.debug.core.cdi.model.ICDITarget; import
org.eclipse.cdt.debug.core.cdi.model.ICDIThread; import
org.eclipse.cdt.debug.core.sourcelookup.ISourceMode; +import
org.eclipse.core.resources.IResource; import
org.eclipse.core.runtime.IAdaptable; import
org.eclipse.debug.core.DebugEvent; import
org.eclipse.debug.core.DebugException; @@ -50,6 +53,7
@@ implements
IThread,
IState,
IRestart, +
IRunToLine,
IInstructionStep,
ISwitchToFrame,
ICDIEventListener @@ -1086,5 +1090,41
@@ private int
getLastStackDepth() { return
fLastStackDepth; + } + + /* (non-Javadoc) + * @see
org.eclipse.cdt.debug.core.IRunToLine#canRunToLine(IResource, int) +
*/ + public boolean canRunToLine( IResource resource, int lineNumber
) + { + return canResume(); + } + + /*
(non-Javadoc) + * @see
org.eclipse.cdt.debug.core.IRunToLine#runToLine(IResource, int) +
*/ + public void runToLine( IResource resource, int lineNumber ) throws
DebugException + { + if ( !canRunToLine( resource,
lineNumber ) ) + return; + ICDILocation
location = getCDISession().getBreakpointManager().createLocation(
resource.getLocation().lastSegment(), null, lineNumber
); + try + { + getCDIThread().runUntil(
location ); + } + catch( CDIException e
) + { + targetRequestFailed( e.toString(), e
); + } + } + + /* (non-Javadoc) + *
@see org.eclipse.core.runtime.IAdaptable#getAdapter(Class) +
*/ + public Object getAdapter(Class
adapter) + { + if ( adapter.equals( IRunToLine.class )
) + return this; + return
super.getAdapter(adapter); } }
|