[
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.141
diff -u -r1.141 ChangeLog
--- ChangeLog 5 Jun 2003 21:18:25 -0000 1.141
+++ ChangeLog 17 Jun 2003 18:43:32 -0000
@@ -1,3 +1,9 @@
+2003-06-17 Alain Magloire
+
+ PR 38934
+ * src/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java (update):
+ We have to call "-var-update" to update the register values in gdb.
+
2003-06-05 Mikhail Khodjaiants
gdb/mi support of infinite values of the floating point types.
* DoubleValue.java
Index: src/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java,v
retrieving revision 1.10
diff -u -r1.10 RegisterManager.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java 14 Mar 2003 16:22:32 -0000 1.10
+++ src/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java 17 Jun 2003 18:43:33 -0000
@@ -21,12 +21,15 @@
import org.eclipse.cdt.debug.mi.core.command.MIDataListChangedRegisters;
import org.eclipse.cdt.debug.mi.core.command.MIDataListRegisterNames;
import org.eclipse.cdt.debug.mi.core.command.MIVarCreate;
+import org.eclipse.cdt.debug.mi.core.command.MIVarUpdate;
import org.eclipse.cdt.debug.mi.core.event.MIEvent;
import org.eclipse.cdt.debug.mi.core.event.MIRegisterChangedEvent;
import org.eclipse.cdt.debug.mi.core.output.MIDataListChangedRegistersInfo;
import org.eclipse.cdt.debug.mi.core.output.MIDataListRegisterNamesInfo;
import org.eclipse.cdt.debug.mi.core.output.MIVar;
+import org.eclipse.cdt.debug.mi.core.output.MIVarChange;
import org.eclipse.cdt.debug.mi.core.output.MIVarCreateInfo;
+import org.eclipse.cdt.debug.mi.core.output.MIVarUpdateInfo;
/**
*/
@@ -34,6 +37,7 @@
private List regList;
private boolean autoupdate;
+ MIVarChange[] noChanges = new MIVarChange[0];
public RegisterManager(Session session) {
super(session);
@@ -171,10 +175,32 @@
}
int[] regnos = info.getRegisterNumbers();
List eventList = new ArrayList(regnos.length);
+ // Now that we know the registers changed
+ // call -var-update to update the value in gdb.
+ // And send the notification.
for (int i = 0 ; i < regnos.length; i++) {
Register reg = getRegister(regnos[i]);
if (reg != null) {
- eventList.add(new MIRegisterChangedEvent(changed.getToken(), reg.getName(), regnos[i]));
+ String varName = reg.getMIVar().getVarName();
+ MIVarChange[] changes = noChanges;
+ MIVarUpdate update = factory.createMIVarUpdate(varName);
+ try {
+ mi.postCommand(update);
+ MIVarUpdateInfo updateInfo = update.getMIVarUpdateInfo();
+ if (updateInfo == null) {
+ throw new CDIException("No answer");
+ }
+ changes = updateInfo.getMIVarChanges();
+ } catch (MIException e) {
+ //throw new MI2CDIException(e);
+ //eventList.add(new MIVarDeletedEvent(varName));
+ }
+ for (int j = 0 ; j < changes.length; j++) {
+ String n = changes[j].getVarName();
+ if (changes[j].isInScope()) {
+ eventList.add(new MIRegisterChangedEvent(update.getToken(), reg.getName(), regnos[i]));
+ }
+ }
}
}
MIEvent[] events = (MIEvent[])eventList.toArray(new MIEvent[0]);