1) CLASSNAME is specified by the property 'name' == CLASSNAME. When doing it by the...
[phpeclipse.git] / net.sourceforge.phpeclipse.xdebug.core / src / net / sourceforge / phpeclipse / xdebug / php / model / XDebugStackFrame.java
index 4a4831e..b0e057f 100644 (file)
@@ -43,7 +43,7 @@ public class XDebugStackFrame  extends XDebugElement implements IStackFrame {
         * @param id stack frame id (0 is the bottom of the stack)
         */
        public XDebugStackFrame(XDebugThread thread, int id, String type, int lineNumber, String where, /*URL*/String filename) {
-               super(thread == null ? null : (XDebugTarget) thread.getDebugTarget());
+               super(/*thread == null ? null : */(XDebugTarget) thread.getDebugTarget());
                
                fLevel = id;
                fThread = thread;
@@ -70,16 +70,21 @@ public class XDebugStackFrame  extends XDebugElement implements IStackFrame {
        }
        
        public IVariable[] getVariables() throws DebugException {
-               if (fVariables == null) {
+               /* always read variables, poor performance
+                * but this fix bug #680.
+                * need to investigate on.
+                */
+               
+               //if (fVariables == null) {
                        Node dfl = ((XDebugTarget) getDebugTarget()).getLocalVariables(fLevel);
                        Node dfg = ((XDebugTarget) getDebugTarget()).getGlobalVariables(fLevel);
                        parseVariable(dfl, dfg);
-               }
+               //}
 
                return fVariables;
        }
        
-       private void parseVariable(Node localVariables, Node globalVariables) {
+       private void parseVariable(Node localVariables, Node globalVariables) throws DebugException {
                NodeList property = localVariables.getChildNodes();
                
                NodeList propertyGlobal = globalVariables.getChildNodes();
@@ -334,4 +339,8 @@ public class XDebugStackFrame  extends XDebugElement implements IStackFrame {
        public boolean setVariableValue(XDebugVariable variable, String expression)  throws DebugException {
                return ((XDebugTarget) getDebugTarget()).setVarValue("$" + variable.getName(), expression);
        }
+       
+       public Node eval(String expression) throws DebugException {
+               return ((XDebugTarget) getDebugTarget()).eval(expression);
+       }
 }
\ No newline at end of file