[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/ChangeLog,v
retrieving revision 1.147
diff -u -r1.147 ChangeLog
--- ChangeLog 10 Jul 2003 19:25:41 -0000 1.147
+++ ChangeLog 16 Jul 2003 19:04:54 -0000
@@ -1,3 +1,23 @@
+2003-07-16 Alain Magloire
+
+ Provide FunctionValue, PointerValue and ArrayValue.
+ For ArrayValue apply the patch from Chris Songer, excerpt from
+ his email:
+ Given GDB performance, we saw CDT start to time out on large array
+ requests. The following patch corrects this by scaling the time out with
+ the number of children being retrieved. I have not looked at the head on
+ this so your mileage may vary. On 1.0.1 with this and the MIParser change
+ you can open 16k arrays.
+
+ * src/org/eclipse/cdt/debug/mi/core/cdi/model/type/AggregateValue.java
+ * src/org/eclipse/cdt/debug/mi/core/cdi/model/type/DerivedValue.java
+ * src/org/eclipse/cdt/debug/mi/core/cdi/model/type/PointerValue.java
+ * src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ReferenceValueValue.java
+ * src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayValue.java
+ * src/org/eclipse/cdt/debug/mi/core/cdi/model/type/StructValue.java
+ * src/org/eclipse/cdt/debug/mi/core/cdi/model/Value.java
+ * src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java
+
2003-07-10 Alain Magloire
In the case of not having a PTY to unmixed inferior output from gdb commands
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/Value.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/Value.java,v
retrieving revision 1.6
diff -u -r1.6 Value.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/Value.java 12 Feb 2003 05:24:58 -0000 1.6
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/Value.java 16 Jul 2003 19:04:54 -0000
@@ -19,7 +19,7 @@
*/
public class Value extends CObject implements ICDIValue {
- Variable variable;
+ protected Variable variable;
public Value(Variable v) {
super(v.getTarget());
@@ -86,6 +86,7 @@
*/
return (getChildrenNumber() > 0);
}
+
/**
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIValue#getVariables()
*/
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java,v
retrieving revision 1.13
diff -u -r1.13 Variable.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java 19 Jun 2003 03:38:37 -0000 1.13
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java 16 Jul 2003 19:04:54 -0000
@@ -35,11 +35,13 @@
import org.eclipse.cdt.debug.mi.core.cdi.MI2CDIException;
import org.eclipse.cdt.debug.mi.core.cdi.Session;
import org.eclipse.cdt.debug.mi.core.cdi.SourceManager;
+import org.eclipse.cdt.debug.mi.core.cdi.model.type.ArrayValue;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.BoolValue;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.CharValue;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.DoubleValue;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.EnumValue;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.FloatValue;
+import org.eclipse.cdt.debug.mi.core.cdi.model.type.FunctionValue;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.IncompleteType;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.IntValue;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.LongLongValue;
@@ -47,6 +49,7 @@
import org.eclipse.cdt.debug.mi.core.cdi.model.type.PointerValue;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.ReferenceValue;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.ShortValue;
+import org.eclipse.cdt.debug.mi.core.cdi.model.type.StructValue;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.Type;
import org.eclipse.cdt.debug.mi.core.cdi.model.type.WCharValue;
import org.eclipse.cdt.debug.mi.core.command.CommandFactory;
@@ -101,13 +104,22 @@
}
public ICDIVariable[] getChildren() throws CDIException {
+ // Use the default timeout.
+ return getChildren(-1);
+ }
+
+ public ICDIVariable[] getChildren(int timeout) throws CDIException {
Session session = (Session)(getTarget().getSession());
MISession mi = session.getMISession();
CommandFactory factory = mi.getCommandFactory();
MIVarListChildren var =
factory.createMIVarListChildren(getMIVar().getVarName());
try {
- mi.postCommand(var);
+ if (timeout >= 0) {
+ mi.postCommand(var, timeout);
+ } else {
+ mi.postCommand(var);
+ }
MIVarListChildrenInfo info = var.getMIVarListChildrenInfo();
if (info == null) {
throw new CDIException("No answer");
@@ -172,21 +184,15 @@
} else if (t instanceof ICDIDoubleType) {
value = new DoubleValue(this);
} else if (t instanceof ICDIFunctionType) {
- //value = new FunctionValue(this);
- value = new Value(this);
+ value = new FunctionValue(this);
} else if (t instanceof ICDIPointerType) {
- //((ICDIPointerType)t).getComponentType();
value = new PointerValue(this);
- //value = new Value(this);
} else if (t instanceof ICDIReferenceType) {
value = new ReferenceValue(this);
} else if (t instanceof ICDIArrayType) {
- //((ICDIArrayType)t).getComponentType();
- //value = new ArrayValue(this);
- value = new Value(this);
+ value = new ArrayValue(this);
} else if (t instanceof ICDIStructType) {
- //value = new StructValue(this);
- value = new Value(this);
+ value = new StructValue(this);
} else {
value = new Value(this);
}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/AggregateValue.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/AggregateValue.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/model/type/AggregateValue.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/AggregateValue.java 16 Jul 2003 19:04:54 -0000
@@ -0,0 +1,19 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+
+import org.eclipse.cdt.debug.core.cdi.model.type.ICDIAggregateValue;
+import org.eclipse.cdt.debug.mi.core.cdi.model.Value;
+import org.eclipse.cdt.debug.mi.core.cdi.model.Variable;
+
+/**
+ */
+public abstract class AggregateValue extends Value implements ICDIAggregateValue {
+
+ public AggregateValue(Variable v) {
+ super(v);
+ }
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayValue.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayValue.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayValue.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ArrayValue.java 16 Jul 2003 19:04:54 -0000
@@ -0,0 +1,41 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+
+package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+
+import org.eclipse.cdt.debug.core.cdi.CDIException;
+import org.eclipse.cdt.debug.core.cdi.model.ICDIVariable;
+import org.eclipse.cdt.debug.core.cdi.model.type.ICDIArrayValue;
+import org.eclipse.cdt.debug.mi.core.cdi.model.Variable;
+
+/**
+ * Enter type comment.
+ *
+ * @since Jun 3, 2003
+ */
+public class ArrayValue extends DerivedValue implements ICDIArrayValue {
+
+ public ArrayValue(Variable v) {
+ super(v);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.debug.core.cdi.model.ICDIValue#getVariables()
+ */
+ public ICDIVariable[] getVariables() throws CDIException {
+
+ /* GDB is appallingly slow on array fetches. As as slow as 128 entries
+ * per second on NT gdbs with slow processors. We need to set a timeout
+ * that's appropraitely scaled by number of children to give the slave
+ * GDB time to respond. In the end perhaps we want a UI for this. As it
+ * is, let's just make up a number that's 5 seconds for us plus one
+ * second for every 128 entries. */
+ int timeout = variable.getMIVar().getNumChild() * 8 + 5000;
+
+ return variable.getChildren(timeout);
+ }
+
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/DerivedValue.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/DerivedValue.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/model/type/DerivedValue.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/DerivedValue.java 16 Jul 2003 19:04:54 -0000
@@ -0,0 +1,20 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+
+import org.eclipse.cdt.debug.core.cdi.model.type.ICDIDerivedValue;
+import org.eclipse.cdt.debug.mi.core.cdi.model.Value;
+import org.eclipse.cdt.debug.mi.core.cdi.model.Variable;
+
+/**
+ */
+public abstract class DerivedValue extends Value implements ICDIDerivedValue {
+
+ public DerivedValue(Variable v) {
+ super(v);
+ }
+
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FunctionValue.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FunctionValue.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FunctionValue.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/FunctionValue.java 16 Jul 2003 19:04:54 -0000
@@ -0,0 +1,22 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+
+package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+
+import org.eclipse.cdt.debug.core.cdi.model.type.ICDIFunctionValue;
+import org.eclipse.cdt.debug.mi.core.cdi.model.Variable;
+
+/**
+ * Enter type comment.
+ *
+ * @since Jun 3, 2003
+ */
+public class FunctionValue extends DerivedValue implements ICDIFunctionValue {
+
+ public FunctionValue(Variable v) {
+ super(v);
+ }
+}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/PointerValue.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/PointerValue.java,v
retrieving revision 1.1
diff -u -r1.1 PointerValue.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/type/PointerValue.java 4 Jun 2003 16:13:35 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/PointerValue.java 16 Jul 2003 19:04:54 -0000
@@ -8,7 +8,6 @@
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIPointerValue;
-import org.eclipse.cdt.debug.mi.core.cdi.model.Value;
import org.eclipse.cdt.debug.mi.core.cdi.model.Variable;
/**
@@ -16,7 +15,7 @@
*
* @since Jun 3, 2003
*/
-public class PointerValue extends Value implements ICDIPointerValue {
+public class PointerValue extends DerivedValue implements ICDIPointerValue {
public PointerValue(Variable v) {
super(v);
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ReferenceValue.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ReferenceValue.java,v
retrieving revision 1.2
diff -u -r1.2 ReferenceValue.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ReferenceValue.java 4 Jun 2003 17:41:53 -0000 1.2
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/ReferenceValue.java 16 Jul 2003 19:04:54 -0000
@@ -8,7 +8,6 @@
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIReferenceValue;
-import org.eclipse.cdt.debug.mi.core.cdi.model.Value;
import org.eclipse.cdt.debug.mi.core.cdi.model.Variable;
/**
@@ -16,7 +15,7 @@
*
* @since Jun 3, 2003
*/
-public class ReferenceValue extends Value implements ICDIReferenceValue {
+public class ReferenceValue extends DerivedValue implements ICDIReferenceValue {
/**
* @param v
Index: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/StructValue.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/mi/core/cdi/model/type/StructValue.java
diff -N src/org/eclipse/cdt/debug/mi/core/cdi/model/type/StructValue.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/mi/core/cdi/model/type/StructValue.java 16 Jul 2003 19:04:54 -0000
@@ -0,0 +1,22 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+
+package org.eclipse.cdt.debug.mi.core.cdi.model.type;
+
+import org.eclipse.cdt.debug.core.cdi.model.type.ICDIStructValue;
+import org.eclipse.cdt.debug.mi.core.cdi.model.Variable;
+
+/**
+ * Enter type comment.
+ *
+ * @since Jun 3, 2003
+ */
+public class StructValue extends AggregateValue implements ICDIStructValue {
+
+ public StructValue(Variable v) {
+ super(v);
+ }
+}