Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] 'exec-until' instead of temporary breakpoints for 'run to line'

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);
  }
 }

Back to the top