Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlain Magloire2003-03-16 21:48:13 +0000
committerAlain Magloire2003-03-16 21:48:13 +0000
commitfb1a5364505825b3e6836131365c59789880d7cb (patch)
tree75651eb80c613cdae8535e5f360d84ae62762041
parentb46bf9a91445d60768d1000c668710c55cb15f8c (diff)
downloadorg.eclipse.cdt-fb1a5364505825b3e6836131365c59789880d7cb.tar.gz
org.eclipse.cdt-fb1a5364505825b3e6836131365c59789880d7cb.tar.xz
org.eclipse.cdt-fb1a5364505825b3e6836131365c59789880d7cb.zip
Create the StackFrame() with the levels.
-rw-r--r--debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/Thread.java25
1 files changed, 15 insertions, 10 deletions
diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/Thread.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/Thread.java
index 83b3868bf66..49fccb180ae 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/Thread.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/Thread.java
@@ -66,7 +66,7 @@ public class Thread extends CObject implements ICDIThread {
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#getStackFrames()
*/
public ICDIStackFrame[] getStackFrames() throws CDIException {
-
+ int depth = 0;
ICDIStackFrame[] stacks = noStack;
Session session = (Session)getTarget().getSession();
Target currentTarget = (Target)session.getCurrentTarget();
@@ -76,6 +76,7 @@ public class Thread extends CObject implements ICDIThread {
MISession mi = session.getMISession();
CommandFactory factory = mi.getCommandFactory();
MIStackListFrames frames = factory.createMIStackListFrames();
+ depth = getStackFrameCount();
mi.postCommand(frames);
MIStackListFramesInfo info = frames.getMIStackListFramesInfo();
if (info == null) {
@@ -84,7 +85,7 @@ public class Thread extends CObject implements ICDIThread {
MIFrame[] miFrames = info.getMIFrames();
stacks = new StackFrame[miFrames.length];
for (int i = 0; i < stacks.length; i++) {
- stacks[i] = new StackFrame(this, miFrames[i]);
+ stacks[i] = new StackFrame(this, miFrames[i], depth - miFrames[i].getLevel());
}
} catch (MIException e) {
//throw new CDIException(e.getMessage());
@@ -97,7 +98,7 @@ public class Thread extends CObject implements ICDIThread {
}
if (currentFrame == null) {
for (int i = 0; i < stacks.length; i++) {
- if (stacks[i].getLevel() == 0) {
+ if (stacks[i].getLevel() == depth) {
currentFrame = stacks[i];
}
}
@@ -147,6 +148,7 @@ public class Thread extends CObject implements ICDIThread {
MISession mi = session.getMISession();
CommandFactory factory = mi.getCommandFactory();
MIStackListFrames frames = factory.createMIStackListFrames(low, high);
+ int depth = getStackFrameCount();
mi.postCommand(frames);
MIStackListFramesInfo info = frames.getMIStackListFramesInfo();
if (info == null) {
@@ -155,7 +157,7 @@ public class Thread extends CObject implements ICDIThread {
MIFrame[] miFrames = info.getMIFrames();
stacks = new StackFrame[miFrames.length];
for (int i = 0; i < stacks.length; i++) {
- stacks[i] = new StackFrame(this, miFrames[i]);
+ stacks[i] = new StackFrame(this, miFrames[i], depth - miFrames[i].getLevel());
}
} catch (MIException e) {
//throw new CDIException(e.getMessage());
@@ -168,7 +170,8 @@ public class Thread extends CObject implements ICDIThread {
}
if (currentFrame == null) {
for (int i = 0; i < stacks.length; i++) {
- if (stacks[i].getLevel() == 0) {
+ StackFrame f = (StackFrame)stacks[i];
+ if (f.getMIFrame().getLevel() == 0) {
currentFrame = stacks[i];
}
}
@@ -187,14 +190,14 @@ public class Thread extends CObject implements ICDIThread {
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIThread#setCurrentStackFrame(ICDIStackFrame, boolean)
*/
public void setCurrentStackFrame(ICDIStackFrame stackframe, boolean doUpdate) throws CDIException {
- int frameNum = 0;
+ int frameLevel = 0;
if (stackframe != null) {
- frameNum = stackframe.getLevel();
+ frameLevel = stackframe.getLevel();
}
// Check to see if we are already at this level
ICDIStackFrame current = getCurrentStackFrame();
- if (current != null && current.getLevel() == frameNum) {
+ if (current != null && current.getLevel() == frameLevel) {
// noop
return;
}
@@ -202,8 +205,10 @@ public class Thread extends CObject implements ICDIThread {
try {
Session session = (Session)getTarget().getSession();
MISession mi = session.getMISession();
- CommandFactory factory = mi.getCommandFactory();
- MIStackSelectFrame frame = factory.createMIStackSelectFrame(frameNum);
+ CommandFactory factory = mi.getCommandFactory();
+ // Need the GDB/MI view of level which is the reverse, i.e. the highest level is 0
+ int miLevel = getStackFrameCount() - frameLevel;
+ MIStackSelectFrame frame = factory.createMIStackSelectFrame(miLevel);
// Set ourself as the current thread first.
((Target)getTarget()).setCurrentThread(this, doUpdate);
mi.postCommand(frame);

Back to the top