[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] MemoryBlock.refresh implementation
|
Implementing ICDIMemoryBlock.refresh in gdb/mi.
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/ChangeLog,v
retrieving revision 1.21
diff -u -r1.21 ChangeLog
--- ChangeLog 26 Oct 2002 20:29:21 -0000 1.21
+++ ChangeLog 26 Oct 2002 23:34:29 -0000
@@ -1,5 +1,14 @@
2002-10-25 Alain Magloire
+ * src/.../core/cdi/CThread.java (getStackFrames): Save the
+ current thread before changing and restore when operation finish.
+
+ * src/.../core/cdi/MemoryBlock.java (refresh): Flush the old
+ data and get new memory.
+ (update): New method to compare individual blocks.
+
+2002-10-25 Alain Magloire
+
Automatically suspend/resume gdb when setting a breakpoint.
The workflow when debuggin which gdb command prompt is to
hit CTRL-C set the breakpoint and continue. The UI debugger
Index: src/org/eclipse/cdt/debug/mi/core/cdi/CThread.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/CThread.java,v
retrieving revision 1.17
diff -u -r1.17 CThread.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/CThread.java 13 Oct 2002 02:26:39 -0000 1.17
+++ src/org/eclipse/cdt/debug/mi/core/cdi/CThread.java 26 Oct 2002 23:34:32 -0000
@@ -60,6 +60,7 @@
CommandFactory factory = mi.getCommandFactory();
MIStackListFrames frames = factory.createMIStackListFrames();
try {
+ ICDIThread oldThread = getCTarget().getCurrentThread();
getCTarget().setCurrentThread(this);
mi.postCommand(frames);
MIStackListFramesInfo info = frames.getMIStackListFramesInfo();
@@ -71,6 +72,7 @@
for (int i = 0; i < stack.length; i++) {
stack[i] = new StackFrame(this, miFrames[i]);
}
+ getCTarget().setCurrentThread(oldThread);
return stack;
} catch (MIException e) {
//throw new CDIException(e.getMessage());
Index: src/org/eclipse/cdt/debug/mi/core/cdi/MemoryBlock.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/MemoryBlock.java,v
retrieving revision 1.4
diff -u -r1.4 MemoryBlock.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/MemoryBlock.java 20 Oct 2002 23:27:46 -0000 1.4
+++ src/org/eclipse/cdt/debug/mi/core/cdi/MemoryBlock.java 26 Oct 2002 23:34:32 -0000
@@ -95,6 +95,14 @@
}
/**
+ * @see org.eclipse.cdt.debug.core.cdi.model.ICDIMemoryBlock#refresh()
+ */
+ public void refresh() throws CDIException {
+ MemoryManager mgr = (MemoryManager)getCTarget().getCSession().getMemoryManager();
+ mgr.update(this, null);
+ }
+
+ /**
* @see org.eclipse.cdt.debug.core.cdi.model.ICDIMemoryBlock#getLength()
*/
public long getLength() {
Index: src/org/eclipse/cdt/debug/mi/core/cdi/MemoryManager.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/MemoryManager.java,v
retrieving revision 1.8
diff -u -r1.8 MemoryManager.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/MemoryManager.java 19 Oct 2002 19:20:35 -0000 1.8
+++ src/org/eclipse/cdt/debug/mi/core/cdi/MemoryManager.java 26 Oct 2002 23:34:31 -0000
@@ -44,19 +44,31 @@
for (int i = 0; i < blocks.length; i++) {
if (! blocks[i].isFrozen()) {
try {
- MemoryBlock block = cloneBlock(blocks[i]);
- Long[] array = compareBlocks(blocks[i], block);
- if (array.length > 0) {
- eventList.add(new MIMemoryChangedEvent(array));
- }
- // Update the block MIDataReadMemoryInfo.
- blocks[i].setMIDataReadMemoryInfo(block.getMIDataReadMemoryInfo());
+ update(blocks[i], eventList);
} catch (CDIException e) {
}
}
}
MIEvent[] events = (MIEvent[])eventList.toArray(new MIEvent[0]);
mi.fireEvents(events);
+ }
+
+ /**
+ * update one Block.
+ */
+ public void update(MemoryBlock block, List aList) throws CDIException {
+ MemoryBlock newBlock = cloneBlock(block);
+ Long[] array = compareBlocks(block, newBlock);
+ // Update the block MIDataReadMemoryInfo.
+ block.setMIDataReadMemoryInfo(newBlock.getMIDataReadMemoryInfo());
+ if (array.length > 0) {
+ if (aList != null) {
+ aList.add(new MIMemoryChangedEvent(array));
+ } else {
+ MISession mi = getCSession().getMISession();
+ mi.fireEvent(new MIMemoryChangedEvent(array));
+ }
+ }
}
/**