diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/IRunToLine.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/IRunToLine.java new file mode 100644 index 00000000000..4dfb32d4f22 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/IRunToLine.java @@ -0,0 +1,32 @@ +/* + *(c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + * + */ +package org.eclipse.cdt.debug.core; + +import org.eclipse.core.resources.IResource; +import org.eclipse.debug.core.DebugException; + +/** + * + * Provides the ability to run a debug target to the given line. + * + * @since Sep 19, 2002 + */ +public interface IRunToLine +{ + /** + * Returns whether this operation is currently available for this element. + * + * @return whether this operation is currently available + */ + public boolean canRunToLine( IResource resource, int lineNumber ); + + /** + * Causes this element to run to specified location. + * + * @exception DebugException on failure. Reasons include: + */ + public void runToLine( IResource resource, int lineNumber ) throws DebugException; +} diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java index 54fb57f32d4..ddbcd8856af 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java @@ -21,6 +21,7 @@ import org.eclipse.cdt.debug.core.ICWatchpoint; import org.eclipse.cdt.debug.core.IFormattedMemoryBlock; import org.eclipse.cdt.debug.core.IFormattedMemoryRetrieval; 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.cdi.CDIException; import org.eclipse.cdt.debug.core.cdi.ICDIBreakpointHit; @@ -55,6 +56,7 @@ import org.eclipse.cdt.debug.internal.core.CSourceLocator; import org.eclipse.cdt.debug.internal.core.breakpoints.CBreakpoint; import org.eclipse.core.resources.IMarkerDelta; import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.DebugEvent; import org.eclipse.debug.core.DebugException; @@ -82,6 +84,7 @@ public class CDebugTarget extends CDebugElement implements IDebugTarget, ICDIEventListener, IRestart, + IRunToLine, IFormattedMemoryRetrieval, IState, ILaunchListener, @@ -1789,4 +1792,26 @@ public class CDebugTarget extends CDebugElement targetRequestFailed( e.getMessage(), null ); } } + + /* (non-Javadoc) + * @see org.eclipse.cdt.debug.core.IRunToLine#canRunToLine(IResource, int) + */ + public boolean canRunToLine( IResource resource, int lineNumber ) + { + // check if supports run to line + 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; + } + setInternalTemporaryBreakpoint( getCDISession().getBreakpointManager().createLocation( resource.getLocation().lastSegment(), null, lineNumber ) ); + resume(); + } } diff --git a/debug/org.eclipse.cdt.debug.ui/icons/full/clcl16/runtoline_co.gif b/debug/org.eclipse.cdt.debug.ui/icons/full/clcl16/runtoline_co.gif new file mode 100644 index 00000000000..a5a56e36a2e Binary files /dev/null and b/debug/org.eclipse.cdt.debug.ui/icons/full/clcl16/runtoline_co.gif differ diff --git a/debug/org.eclipse.cdt.debug.ui/icons/full/dlcl16/runtoline_co.gif b/debug/org.eclipse.cdt.debug.ui/icons/full/dlcl16/runtoline_co.gif new file mode 100644 index 00000000000..786a24535a2 Binary files /dev/null and b/debug/org.eclipse.cdt.debug.ui/icons/full/dlcl16/runtoline_co.gif differ diff --git a/debug/org.eclipse.cdt.debug.ui/icons/full/elcl16/runtoline_co.gif b/debug/org.eclipse.cdt.debug.ui/icons/full/elcl16/runtoline_co.gif new file mode 100644 index 00000000000..2ec717803cc Binary files /dev/null and b/debug/org.eclipse.cdt.debug.ui/icons/full/elcl16/runtoline_co.gif differ diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.properties b/debug/org.eclipse.cdt.debug.ui/plugin.properties index 4fcf1584e41..726d80ffc6a 100644 --- a/debug/org.eclipse.cdt.debug.ui/plugin.properties +++ b/debug/org.eclipse.cdt.debug.ui/plugin.properties @@ -26,3 +26,4 @@ ManageBreakpointAction.label=Add/Remove C/C++ Brea&kpoint BreakpointPropertiesAction.label=P&roperties... ManageWatchpointAction.label=Add C/C++ &Watchpoint... AddExpressionAction.label=Add C/C++ &Expression... +RunToLineAction.label=Run To C/C++ &Line \ No newline at end of file diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.xml b/debug/org.eclipse.cdt.debug.ui/plugin.xml index 9e2b7dbd186..4775d2e9bc2 100644 --- a/debug/org.eclipse.cdt.debug.ui/plugin.xml +++ b/debug/org.eclipse.cdt.debug.ui/plugin.xml @@ -120,6 +120,23 @@ + + + + + + + + + + + + + + + +