From bc6ac94fde4fdbb89e5a3be530cf92d8b5ede8b4 Mon Sep 17 00:00:00 2001 From: Alain Magloire Date: Wed, 15 Sep 2004 19:58:38 +0000 Subject: [PATCH] 2004-09-15 Alain Magloire The correct thread was not set. * cdi/org/eclipse/cdt/debug/mi/core/cdi/ExpressionManager.java * cdi/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java * cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Thread.java --- debug/org.eclipse.cdt.debug.mi.core/ChangeLog | 7 +++++++ .../cdt/debug/mi/core/cdi/ExpressionManager.java | 2 ++ .../cdt/debug/mi/core/cdi/VariableManager.java | 12 +++++++++++- .../eclipse/cdt/debug/mi/core/cdi/model/Thread.java | 3 +++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/debug/org.eclipse.cdt.debug.mi.core/ChangeLog b/debug/org.eclipse.cdt.debug.mi.core/ChangeLog index 8bfcebc3e71..2fe93230d68 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.mi.core/ChangeLog @@ -1,3 +1,10 @@ +2004-09-15 Alain Magloire + + The correct thread was not set. + * cdi/org/eclipse/cdt/debug/mi/core/cdi/ExpressionManager.java + * cdi/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java + * cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Thread.java + 2004-09-12 Alain Magloire Since MISession is attach to the Target, the way we fire termination events must change also. diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/ExpressionManager.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/ExpressionManager.java index 045285230de..dd36f9e6cc8 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/ExpressionManager.java +++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/ExpressionManager.java @@ -134,6 +134,7 @@ public class ExpressionManager extends Manager implements ICDIExpressionManager{ Target target = (Target)frame.getTarget(); ICDIThread currentThread = target.getCurrentThread(); ICDIStackFrame currentFrame = currentThread.getCurrentStackFrame(); + target.setCurrentThread(frame.getThread(), false); frame.getThread().setCurrentStackFrame(frame, false); try { MISession mi = target.getMISession(); @@ -151,6 +152,7 @@ public class ExpressionManager extends Manager implements ICDIExpressionManager{ } catch (MIException e) { throw new MI2CDIException(e); } finally { + target.setCurrentThread(currentThread, false); currentThread.setCurrentStackFrame(currentFrame, false); } return expression; diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java index 4faf74ae691..07488b9c022 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java +++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java @@ -153,6 +153,7 @@ public class VariableManager extends Manager implements ICDIVariableManager { Target target = (Target)frame.getTarget(); ICDIThread currentThread = target.getCurrentThread(); ICDIStackFrame currentFrame = currentThread.getCurrentStackFrame(); + target.setCurrentThread(frame.getThread(), false); frame.getThread().setCurrentStackFrame(frame, false); try { MISession miSession = target.getMISession(); @@ -166,6 +167,7 @@ public class VariableManager extends Manager implements ICDIVariableManager { } catch (MIException e) { throw new MI2CDIException(e); } finally { + target.setCurrentThread(currentThread, false); currentThread.setCurrentStackFrame(currentFrame, false); } } else { @@ -233,6 +235,7 @@ public class VariableManager extends Manager implements ICDIVariableManager { if (stack != null) { currentThread = target.getCurrentThread(); currentFrame = currentThread.getCurrentStackFrame(); + target.setCurrentThread(stack.getThread(), false); stack.getThread().setCurrentStackFrame(stack, false); } try { @@ -251,6 +254,7 @@ public class VariableManager extends Manager implements ICDIVariableManager { throw new MI2CDIException(e); } finally { if (currentThread != null) { + target.setCurrentThread(currentThread, false); currentThread.setCurrentStackFrame(currentFrame, false); } } @@ -269,6 +273,7 @@ public class VariableManager extends Manager implements ICDIVariableManager { Target target = (Target)frame.getTarget(); ICDIThread currentThread = target.getCurrentThread(); ICDIStackFrame currentFrame = currentThread.getCurrentStackFrame(); + target.setCurrentThread(frame.getThread(), false); frame.getThread().setCurrentStackFrame(frame, false); try { MISession mi = target.getMISession(); @@ -297,7 +302,8 @@ public class VariableManager extends Manager implements ICDIVariableManager { } catch (MIException e) { throw new MI2CDIException(e); } finally { - currentThread.setCurrentStackFrame(currentFrame); + target.setCurrentThread(currentThread, false); + currentThread.setCurrentStackFrame(currentFrame, false); } return (ICDIArgumentObject[]) argObjects.toArray(new ICDIArgumentObject[0]); } @@ -394,6 +400,7 @@ public class VariableManager extends Manager implements ICDIVariableManager { Target target = (Target)frame.getTarget(); ICDIThread currentThread = target.getCurrentThread(); ICDIStackFrame currentFrame = currentThread.getCurrentStackFrame(); + target.setCurrentThread(frame.getThread(), false); frame.getThread().setCurrentStackFrame(frame, false); try { MISession mi = target.getMISession(); @@ -416,6 +423,7 @@ public class VariableManager extends Manager implements ICDIVariableManager { } catch (MIException e) { throw new MI2CDIException(e); } finally { + target.setCurrentThread(currentThread, false); currentThread.setCurrentStackFrame(currentFrame, false); } return (ICDIVariableObject[]) varObjects.toArray(new ICDIVariableObject[0]); @@ -453,6 +461,7 @@ public class VariableManager extends Manager implements ICDIVariableManager { if (stack != null) { currentThread = target.getCurrentThread(); currentFrame = currentThread.getCurrentStackFrame(); + target.setCurrentThread(stack.getThread(), false); stack.getThread().setCurrentStackFrame(stack, false); } try { @@ -471,6 +480,7 @@ public class VariableManager extends Manager implements ICDIVariableManager { throw new MI2CDIException(e); } finally { if (currentThread != null) { + target.setCurrentThread(currentThread, false); currentThread.setCurrentStackFrame(currentFrame, false); } } diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Thread.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Thread.java index 2cfea8a0bbe..685c0eb6a1c 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Thread.java +++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Thread.java @@ -254,6 +254,9 @@ 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 { + + // Assert we should assert that the stackframe is one of our frames. + int frameLevel = 0; if (stackframe != null) { frameLevel = stackframe.getLevel();