Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreutarass2010-05-04 01:11:56 +0000
committereutarass2010-05-04 01:11:56 +0000
commitdca028520f0197736bb1dc70c5bb1c88fd8cfb62 (patch)
treece34b38c16f3e9864bee4f7a39774e018ec5f244 /plugins/org.eclipse.tm.tcf.debug/src
parentb6a48dc562c3844a3dfab0c362c8bd103c2d2fee (diff)
downloadorg.eclipse.tcf-dca028520f0197736bb1dc70c5bb1c88fd8cfb62.tar.gz
org.eclipse.tcf-dca028520f0197736bb1dc70c5bb1c88fd8cfb62.tar.xz
org.eclipse.tcf-dca028520f0197736bb1dc70c5bb1c88fd8cfb62.zip
TCF Debugger: improved source step over command: skip code that has no line number info
Diffstat (limited to 'plugins/org.eclipse.tm.tcf.debug/src')
-rw-r--r--plugins/org.eclipse.tm.tcf.debug/src/org/eclipse/tm/internal/tcf/debug/actions/TCFActionStepOver.java12
1 files changed, 8 insertions, 4 deletions
diff --git a/plugins/org.eclipse.tm.tcf.debug/src/org/eclipse/tm/internal/tcf/debug/actions/TCFActionStepOver.java b/plugins/org.eclipse.tm.tcf.debug/src/org/eclipse/tm/internal/tcf/debug/actions/TCFActionStepOver.java
index c8ebdeac3..d61e13539 100644
--- a/plugins/org.eclipse.tm.tcf.debug/src/org/eclipse/tm/internal/tcf/debug/actions/TCFActionStepOver.java
+++ b/plugins/org.eclipse.tm.tcf.debug/src/org/eclipse/tm/internal/tcf/debug/actions/TCFActionStepOver.java
@@ -104,7 +104,12 @@ public abstract class TCFActionStepOver extends TCFAction implements IRunControl
else if (area.end_address != null) pc1 = new BigInteger(area.end_address.toString());
}
}
- if (getStackFrameIndex() > 0) {
+ int fno = getStackFrameIndex();
+ if (fno < 0) {
+ exit(null);
+ return;
+ }
+ if (fno > 0) {
if (ctx.canResume(IRunControl.RM_STEP_OUT)) {
ctx.resume(IRunControl.RM_STEP_OUT, 1, new IRunControl.DoneCommand() {
public void doneCommand(IToken token, Exception error) {
@@ -154,7 +159,7 @@ public abstract class TCFActionStepOver extends TCFAction implements IRunControl
bp = null;
}
if (step_cnt > 0) {
- if (pc0 == null || pc1 == null || state.getData().suspend_pc == null) {
+ if (pc0 == null && pc1 == null || state.getData().suspend_pc == null) {
exit(null);
return;
}
@@ -164,8 +169,7 @@ public abstract class TCFActionStepOver extends TCFAction implements IRunControl
if (!line_info.validate(this)) return;
TCFSourceRef ref = line_info.getData();
if (ref == null || ref.area == null) {
- exit(null);
- return;
+ // No line info for current PC, continue stepping
}
else if (isSameLine(source_ref.area, ref.area)) {
source_ref = ref;

Back to the top