[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] Associate with MI Event the command token.
|
Index: ChangeLog
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
should be smart enought to do this by itself. So if the
inferior is running, when setting a breakpoint the program
is suspended(target.suspend()), the suspend event is ignore
the breakpoint is set (--break-insert) and the target is resume.
To ignore a specific event, we use a (mis)behaviour of gdb that
associate the suspend(*stopped) with the last execution command.
(gdb)
111-exec-continue
111^running
(gdb)
222-exec-interrupt
222^done
(gdb)
111*stopped,signal-name="SIGINT",signal-meaning="Interrupt",
frame={addr="0x00010140",func="foo",args=[],file="try.c",line="13"}
(gdb)
In the case above event 111 is ignore.
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/ChangeLog,v
retrieving revision 1.20
diff -u -r1.20 ChangeLog
--- ChangeLog 24 Oct 2002 15:06:53 -0000 1.20
+++ ChangeLog 26 Oct 2002 20:20:32 -0000
@@ -1,3 +1,75 @@
+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
+ should be smart enought to do this by itself. So if the
+ inferior is running, when setting a breakpoint the program
+ is suspended(target.suspend()), the suspend event is ignore
+ the breakpoint is set (--break-insert) and the target is resume.
+ To ignore a specific event, we use a (mis)behaviour of gdb that
+ associate the suspend(*stopped) with the last execution command.
+ (gdb)
+ 111-exec-continue
+ 111^running
+ (gdb)
+ 222-exec-interrupt
+ 222^done
+ (gdb)
+ 111*stopped,signal-name="SIGINT",signal-meaning="Interrupt",
+ frame={addr="0x00010140",func="foo",args=[],file="try.c",line="13"}
+ (gdb)
+ In the case above event 111 is ignore.
+
+ * src/.../core/command/CLICommand.java (toString): Always put
+ the identifying token.
+ * src/.../core/command/Command.java (setToken): Removed.
+ (getUniqToken): New method returns a global uniq token.
+ (getToken): Returns a uniq token for the command.
+ * src/.../core/MIInferior.java (setTerminated): New argument token,
+ since now all MIEvent has the corresponding command token.
+ * src/.../core/MISession.java (cmdCount): Removed.
+ (postCommand): the command getToken() will return a uniq token.
+ * src/.../core/RxThread.java (processMIOOBRecord): MIEvent take
+ the corresponding command token as argument.
+ * src/.../core/TxThrea.java (token): Field removed, token are no
+ longer created in this tread.
+ * src/.../core/event/MIBreakpointEvent.java:
+ * src/.../core/event/MIBreakpointEvent.java:
+ * src/.../core/event/MIChangedEvent.java:
+ * src/.../core/event/MIDetachedEvent.java:
+ * src/.../core/event/MIEvent.java:
+ * src/.../core/event/MIFunctionFinishedEvent.java:
+ * src/.../core/event/MIGDBExitEvent.java:
+ * src/.../core/event/MIInferiorExitEvent.java:
+ * src/.../core/event/MILocationReachedEvent.java:
+ * src/.../core/event/MIMemoryChangedEvent.java:
+ * src/.../core/event/MIRegisterChangedEvent.java:
+ * src/.../core/event/MIRunningEvent.java:
+ * src/.../core/event/MISignalEvent.java:
+ * src/.../core/event/MISteppingRangeEvent.java:
+ * src/.../core/event/MIStoppedEvent.java:
+ * src/.../core/event/MIThreadExitEvent.java:
+ * src/.../core/event/MIVarChangedEvent.java:
+ * src/.../core/event/MIWatchpointScopeEvent.java:
+ * src/.../core/event/MIWatchpointTriggerEvent.java:
+ Calls super with getToken().
+ * src/.../core/cdi/BreakpointManager.java (allowProgramInterruption):
+ New method to allow suspending the program to set a breakpoint.
+ (suspendInferior): get the last token execution an ignore the suspend
+ event.
+ * src/.../core/cdi/CTarget.java (getLastExecutionToken): New method
+ returns the token of the last execution command.
+ * src/.../core/cdi/EventManager.java (enableEventToken): New method.
+ (enableEventTokens): New method.
+ (disableEventToken): New method.
+ (disableEventTokens): New method.
+ (update): Ignore token in the disable list.
+ * src/.../core/cdi/RegisterManager.java (update): MIEvent takes
+ a token.
+ * src/.../core/cdi/Variable.java (setValue): MIEvent takes a token.
+ * src/.../core/cdi/VariableManager.java (update): MIEvent takes a token.
+
2002-10-24 Alain Magloire
* src/.../core/RxThread.java (processMIOutput): Fire a
Index: src/org/eclipse/cdt/debug/mi/core/MIInferior.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MIInferior.java,v
retrieving revision 1.23
diff -u -r1.23 MIInferior.java
--- src/org/eclipse/cdt/debug/mi/core/MIInferior.java 22 Oct 2002 20:27:33 -0000 1.23
+++ src/org/eclipse/cdt/debug/mi/core/MIInferior.java 26 Oct 2002 20:20:34 -0000
@@ -169,7 +169,7 @@
interrupt();
session.postCommand(abort);
abort.getMIInfo();
- setTerminated(true);
+ setTerminated(abort.getToken(), true);
} catch (MIException e) {
}
}
@@ -226,10 +226,10 @@
}
public synchronized void setTerminated() {
- setTerminated(false);
+ setTerminated(0, false);
}
- synchronized void setTerminated(boolean fireEvent) {
+ synchronized void setTerminated(int token, boolean fireEvent) {
state = TERMINATED;
// Close the streams.
try {
@@ -270,7 +270,7 @@
}
}
if (fireEvent) {
- session.fireEvent(new MIInferiorExitEvent());
+ session.fireEvent(new MIInferiorExitEvent(token));
}
notifyAll();
}
Index: src/org/eclipse/cdt/debug/mi/core/MISession.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/MISession.java,v
retrieving revision 1.38
diff -u -r1.38 MISession.java
--- src/org/eclipse/cdt/debug/mi/core/MISession.java 22 Oct 2002 20:28:47 -0000 1.38
+++ src/org/eclipse/cdt/debug/mi/core/MISession.java 26 Oct 2002 20:20:33 -0000
@@ -79,9 +79,6 @@
MIInferior inferior;
- int cmdCount = 1;
-
-
/**
* Create the gdb session.
*
@@ -256,7 +253,7 @@
public synchronized void postCommand(Command cmd, long timeout) throws MIException {
// TRACING: print the command;
- MIPlugin.getDefault().debugLog(cmdCount++ + " " + cmd.toString());
+ MIPlugin.getDefault().debugLog(cmd.toString());
// Test if we are in a sane state.
if (!txThread.isAlive() || !rxThread.isAlive()) {
@@ -339,7 +336,7 @@
// Tell the observers that the session
// is finish, but we can not use the Event Thread.
// The Event Thread is being kill below.
- notifyObservers(new MIGDBExitEvent());
+ notifyObservers(new MIGDBExitEvent(0));
// {in,out}Channel is use as predicate/condition
// in the {RX,TX,Event}Thread to detect termination
Index: src/org/eclipse/cdt/debug/mi/core/RxThread.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/RxThread.java,v
retrieving revision 1.36
diff -u -r1.36 RxThread.java
--- src/org/eclipse/cdt/debug/mi/core/RxThread.java 24 Oct 2002 15:06:45 -0000 1.36
+++ src/org/eclipse/cdt/debug/mi/core/RxThread.java 26 Oct 2002 20:20:34 -0000
@@ -118,7 +118,7 @@
// Notify any command waiting for a ResultRecord.
MIResultRecord rr = response.getMIResultRecord();
if (rr != null) {
- int id = rr.geToken();
+ int id = rr.getToken();
Command cmd = rxQueue.removeCommand(id);
// Check if the state changed.
@@ -143,7 +143,7 @@
type = MIRunningEvent.CONTINUE;
}
session.getMIInferior().setRunning();
- MIEvent event = new MIRunningEvent(type);
+ MIEvent event = new MIRunningEvent(id, type);
session.fireEvent(event);
} else if ("exit".equals(state)) {
// No need to do anything, terminate() will.
@@ -153,7 +153,7 @@
} else if ("error".equals(state)) {
if (session.getMIInferior().isRunning()) {
session.getMIInferior().setSuspended();
- MIEvent event = new MIStoppedEvent();
+ MIEvent event = new MIStoppedEvent(id);
session.fireEvent(event);
}
}
@@ -230,7 +230,7 @@
// "reason" ??? still fire a stopped event.
if (e == null) {
session.getMIInferior().setSuspended();
- e = new MIStoppedEvent();
+ e = new MIStoppedEvent(exec.getToken());
list.add(e);
}
}
Index: src/org/eclipse/cdt/debug/mi/core/TxThread.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/TxThread.java,v
retrieving revision 1.14
diff -u -r1.14 TxThread.java
--- src/org/eclipse/cdt/debug/mi/core/TxThread.java 24 Oct 2002 02:43:18 -0000 1.14
+++ src/org/eclipse/cdt/debug/mi/core/TxThread.java 26 Oct 2002 20:20:35 -0000
@@ -20,13 +20,10 @@
public class TxThread extends Thread {
MISession session;
- int token;
public TxThread(MISession s) {
super("MI TX Thread");
session = s;
- // start at one, zero is special means no token.
- token = 1;
}
public void run () {
@@ -44,13 +41,9 @@
}
if (cmd != null) {
- // Give the command a token and increment.
- cmd.setToken(token++);
- // Move to the RxQueue only if we have
- // a valid token, this is to permit input(HACK!)
- // or commands that do not want to wait for responses.
+ // Move to the RxQueue only if RxThread is alive.
Thread rx = session.getRxThread();
- if (cmd.getToken() > 0 && rx != null && rx.isAlive()) {
+ if (rx != null && rx.isAlive()) {
CommandQueue rxQueue = session.getRxQueue();
rxQueue.addCommand(cmd);
} else {
@@ -121,7 +114,7 @@
}
if (type != -1) {
session.getMIInferior().setRunning();
- MIEvent event = new MIRunningEvent(type);
+ MIEvent event = new MIRunningEvent(cmd.getToken(), type);
session.fireEvent(event);
}
}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java,v
retrieving revision 1.20
diff -u -r1.20 BreakpointManager.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java 20 Sep 2002 17:12:48 -0000 1.20
+++ src/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java 26 Oct 2002 20:20:53 -0000
@@ -39,10 +39,12 @@
public class BreakpointManager extends SessionObject implements ICDIBreakpointManager {
List breakList;
+ boolean allowInterrupt;
public BreakpointManager(CSession session) {
super(session);
breakList = new ArrayList(1);
+ allowInterrupt = true;
}
boolean containsBreakpoint(int number) {
@@ -77,10 +79,12 @@
CSession s = getCSession();
CTarget target = s.getCTarget();
// Stop the program and disable events.
- if (target.isRunning()) {
+ if (target.isRunning() && allowInterrupt) {
+ int lastToken = target.getLastExecutionToken();
shouldRestart = true;
- ((EventManager)s.getEventManager()).disableEvents();
+ ((EventManager)s.getEventManager()).disableEventToken(lastToken);
target.suspend();
+ ((EventManager)s.getEventManager()).enableEventToken(lastToken);
}
return shouldRestart;
}
@@ -90,10 +94,16 @@
CSession s = getCSession();
CTarget target = s.getCTarget();
target.resume();
- ((EventManager)s.getEventManager()).enableEvents();
}
}
+
+ /**
+ * @see org.eclipse.cdt.debug.core.cdi.ICDIBreakpointManager#allowProgramInterruption()
+ */
+ public void allowProgramInterruption(boolean e) {
+ allowInterrupt = e;
+ }
/**
* @see org.eclipse.cdt.debug.core.cdi.ICDIBreakpointManager#deleteAllBreakpoints()
Index: src/org/eclipse/cdt/debug/mi/core/cdi/CTarget.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/CTarget.java,v
retrieving revision 1.31
diff -u -r1.31 CTarget.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/CTarget.java 20 Oct 2002 23:27:25 -0000 1.31
+++ src/org/eclipse/cdt/debug/mi/core/cdi/CTarget.java 26 Oct 2002 20:20:55 -0000
@@ -45,6 +45,7 @@
CThread[] noThreads = new CThread[0];
CThread[] currentThreads;
int currentThreadId;
+ int lastExecutionToken;
public CTarget(CSession s) {
session = s;
@@ -55,6 +56,10 @@
return session;
}
+ int getLastExecutionToken() {
+ return lastExecutionToken;
+ }
+
/**
* @see org.eclipse.cdt.debug.core.cdi.model.ICDITarget#getSession()
*/
@@ -236,6 +241,7 @@
} catch (MIException e) {
throw new CDIException(e.getMessage());
}
+ lastExecutionToken = run.getToken();
}
/**
@@ -257,6 +263,7 @@
} catch (MIException e) {
throw new CDIException(e.getMessage());
}
+ lastExecutionToken = cont.getToken();
} else if (mi.getMIInferior().isTerminated()) {
restart();
} else {
@@ -281,6 +288,7 @@
} catch (MIException e) {
throw new CDIException(e.getMessage());
}
+ lastExecutionToken = step.getToken();
}
/**
@@ -299,6 +307,7 @@
} catch (MIException e) {
throw new CDIException(e.getMessage());
}
+ lastExecutionToken = stepi.getToken();
}
/**
@@ -317,6 +326,7 @@
} catch (MIException e) {
throw new CDIException(e.getMessage());
}
+ lastExecutionToken = next.getToken();
}
/**
@@ -335,6 +345,7 @@
} catch (MIException e) {
throw new CDIException(e.getMessage());
}
+ lastExecutionToken = nexti.getToken();
}
/**
@@ -353,6 +364,7 @@
} catch (MIException e) {
throw new CDIException(e.getMessage());
}
+ lastExecutionToken = finish.getToken();
}
/**
@@ -384,8 +396,10 @@
} catch (MIException e) {
throw new CDIException(e.getMessage());
}
+ // Unfortunately -target-detach does not generate an
+ // event so we do it here.
MISession miSession = session.getMISession();
- miSession.fireEvent(new MIDetachedEvent());
+ miSession.fireEvent(new MIDetachedEvent(detach.getToken()));
session.getMISession().getMIInferior().setDisconnected();
}
@@ -405,6 +419,7 @@
} catch (MIException e) {
throw new CDIException(e.getMessage());
}
+ lastExecutionToken = finish.getToken();
}
/**
Index: src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java,v
retrieving revision 1.21
diff -u -r1.21 EventManager.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java 21 Oct 2002 20:38:20 -0000 1.21
+++ src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java 26 Oct 2002 20:20:56 -0000
@@ -39,17 +39,21 @@
public class EventManager extends SessionObject implements ICDIEventManager, Observer {
List list = Collections.synchronizedList(new ArrayList(1));
- boolean isEnable = true;
+ List tokenList = new ArrayList(1);
/**
- * Process the event from MI and do any state work on the CDI.
+ * Process the event from MI, do any state work on the CDI,
+ * and fire the corresponding CDI event.
*/
public void update(Observable o, Object arg) {
MIEvent miEvent = (MIEvent)arg;
CSession session = getCSession();
List cdiList = new ArrayList(1);
- if (miEvent instanceof MIStoppedEvent) {
+ if (ignoreEventToken(miEvent.getToken())) {
+ miEvent = miEvent;
+ // Ignore the event if it is on the ignore list.
+ } else if (miEvent instanceof MIStoppedEvent) {
processSuspendedEvent(miEvent);
cdiList.add(new SuspendedEvent(session, miEvent));
} else if (miEvent instanceof MIRunningEvent) {
@@ -90,10 +94,8 @@
}
// Fire the event;
- if (isEnable) {
- ICDIEvent[] cdiEvents = (ICDIEvent[])cdiList.toArray(new ICDIEvent[0]);
- fireEvent(cdiEvents);
- }
+ ICDIEvent[] cdiEvents = (ICDIEvent[])cdiList.toArray(new ICDIEvent[0]);
+ fireEvents(cdiEvents);
}
public EventManager(CSession session) {
@@ -114,7 +116,11 @@
list.remove(listener);
}
- private void fireEvent(ICDIEvent[] cdiEvents) {
+
+ /**
+ * Send ICDIEvent to the listeners.
+ */
+ private void fireEvents(ICDIEvent[] cdiEvents) {
if (cdiEvents != null) {
for (int i = 0; i < cdiEvents.length; i++) {
fireEvent(cdiEvents[i]);
@@ -122,6 +128,9 @@
}
}
+ /**
+ * Send ICDIEvent to the listeners.
+ */
private void fireEvent(ICDIEvent cdiEvent) {
if (cdiEvent != null) {
ICDIEventListener[] listeners =
@@ -178,18 +187,51 @@
}
}
+ /**
+ * Do any processing of before a running event.
+ */
void processRunningEvent() {
//CTarget target = getCSession().getCTarget();
//target.clearState();
}
- void disableEvents() {
- isEnable = false;
+ /**
+ * Ignore Event with token id.
+ */
+ void disableEventToken(int token) {
+ tokenList.add(new Integer(token));
+ }
+
+ /**
+ * Ignore events with token ids.
+ */
+ void disableEventTokens(int [] tokens) {
+ for (int i = 0; i < tokens.length; i++) {
+ disableEventToken(tokens[i]);
+ }
+ }
+
+ /**
+ * Reenable sending events with this token.
+ */
+ void enableEventToken(int token) {
+ Integer t = new Integer(token);
+ if (tokenList.contains(t)) {
+ tokenList.remove(t);
+ }
}
- void enableEvents() {
- isEnable = true;
+ /**
+ * Reenable sending events with this token.
+ */
+ void enableEventTokens(int [] tokens) {
+ for (int i = 0; i < tokens.length; i++) {
+ enableEventToken(tokens[i]);
+ }
}
+ private boolean ignoreEventToken(int token) {
+ return tokenList.contains(new Integer(token));
+ }
}
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.1
diff -u -r1.1 RegisterManager.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java 2 Oct 2002 04:51:01 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java 26 Oct 2002 20:20:53 -0000
@@ -113,7 +113,7 @@
for (int i = 0 ; i < regnos.length; i++) {
Register reg = getRegister(regnos[i]);
if (reg != null) {
- eventList.add(new MIRegisterChangedEvent(reg.getName(), regnos[i]));
+ eventList.add(new MIRegisterChangedEvent(changed.getToken(), reg.getName(), regnos[i]));
}
}
MIEvent[] events = (MIEvent[])eventList.toArray(new MIEvent[0]);
Index: src/org/eclipse/cdt/debug/mi/core/cdi/Variable.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/Variable.java,v
retrieving revision 1.9
diff -u -r1.9 Variable.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/Variable.java 12 Sep 2002 18:55:31 -0000 1.9
+++ src/org/eclipse/cdt/debug/mi/core/cdi/Variable.java 26 Oct 2002 20:20:53 -0000
@@ -93,8 +93,7 @@
}
// If the assign was succesfull fire a MIVarChangedEvent()
- // FIXME: Is this necessary?
- MIVarChangedEvent change = new MIVarChangedEvent(miVar.getVarName(), true);
+ MIVarChangedEvent change = new MIVarChangedEvent(var.getToken(), miVar.getVarName(), true);
mi.fireEvent(change);
}
Index: src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java,v
retrieving revision 1.9
diff -u -r1.9 VariableManager.java
--- src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java 9 Oct 2002 14:08:42 -0000 1.9
+++ src/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java 26 Oct 2002 20:20:55 -0000
@@ -105,7 +105,7 @@
String varName = changes[i].getVarName();
Element element = getElement(varName);
if (element != null) {
- eventList.add( new MIVarChangedEvent(varName, changes[i].isInScope()));
+ eventList.add(new MIVarChangedEvent(update.getToken(), varName, changes[i].isInScope()));
}
if (! changes[i].isInScope()) {
// Only remove ICDIVariables.
Index: src/org/eclipse/cdt/debug/mi/core/command/CLICommand.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/CLICommand.java,v
retrieving revision 1.11
diff -u -r1.11 CLICommand.java
--- src/org/eclipse/cdt/debug/mi/core/command/CLICommand.java 24 Oct 2002 02:41:42 -0000 1.11
+++ src/org/eclipse/cdt/debug/mi/core/command/CLICommand.java 26 Oct 2002 20:20:51 -0000
@@ -30,13 +30,7 @@
* @return the text representation of this command
*/
public String toString(){
- String str = null;
- int t = getToken();
- if (t > 0) {
- str = Integer.toString(t) + " " + operation;
- } else {
- str = operation;
- }
+ String str = getToken() + " " + operation;
if (str.endsWith("\n"))
return str;
return str + "\n";
Index: src/org/eclipse/cdt/debug/mi/core/command/Command.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/command/Command.java,v
retrieving revision 1.8
diff -u -r1.8 Command.java
--- src/org/eclipse/cdt/debug/mi/core/command/Command.java 8 Aug 2002 04:07:00 -0000 1.8
+++ src/org/eclipse/cdt/debug/mi/core/command/Command.java 26 Oct 2002 20:20:50 -0000
@@ -15,21 +15,40 @@
*/
public abstract class Command
{
+ private static int globalCounter;
+
int token = 0;
MIOutput output;
/**
+ * A global counter for all command, the token
+ * will be use to identify uniquely a command.
+ * Unless the value wraps around which is unlikely.
+ */
+ private static synchronized int getUniqToken() {
+ int count = ++globalCounter;
+ // If we ever wrap around.
+ if (count <= 0) {
+ count = globalCounter = 1;
+ }
+ return count;
+ }
+
+ /**
* Returns the identifier of this request.
*
* @return the identifier of this request
*/
public int getToken() {
+ if (token == 0) {
+ token = getUniqToken();
+ }
return token;
}
- public void setToken(int token) {
- this.token = token;
- }
+// public void setToken(int token) {
+// this.token = token;
+// }
public MIOutput getMIOutput() {
return output;
Index: src/org/eclipse/cdt/debug/mi/core/event/MIBreakpointEvent.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/event/MIBreakpointEvent.java,v
retrieving revision 1.5
diff -u -r1.5 MIBreakpointEvent.java
--- src/org/eclipse/cdt/debug/mi/core/event/MIBreakpointEvent.java 27 Aug 2002 03:47:09 -0000 1.5
+++ src/org/eclipse/cdt/debug/mi/core/event/MIBreakpointEvent.java 26 Oct 2002 20:20:36 -0000
@@ -27,11 +27,13 @@
MIResultRecord rr;
public MIBreakpointEvent(MIExecAsyncOutput record) {
+ super(record.getToken());
exec = record;
parse();
}
public MIBreakpointEvent(MIResultRecord record) {
+ super(record.getToken());
rr = record;
parse();
}
Index: src/org/eclipse/cdt/debug/mi/core/event/MIChangedEvent.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/event/MIChangedEvent.java,v
retrieving revision 1.1
diff -u -r1.1 MIChangedEvent.java
--- src/org/eclipse/cdt/debug/mi/core/event/MIChangedEvent.java 2 Oct 2002 04:55:12 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/event/MIChangedEvent.java 26 Oct 2002 20:20:36 -0000
@@ -12,4 +12,7 @@
*
*/
public abstract class MIChangedEvent extends MIEvent {
+ public MIChangedEvent(int id) {
+ super(id);
+ }
}
Index: src/org/eclipse/cdt/debug/mi/core/event/MIDetachedEvent.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/event/MIDetachedEvent.java,v
retrieving revision 1.2
diff -u -r1.2 MIDetachedEvent.java
--- src/org/eclipse/cdt/debug/mi/core/event/MIDetachedEvent.java 9 Oct 2002 14:08:42 -0000 1.2
+++ src/org/eclipse/cdt/debug/mi/core/event/MIDetachedEvent.java 26 Oct 2002 20:20:36 -0000
@@ -13,7 +13,8 @@
*/
public class MIDetachedEvent extends MIEvent {
- public MIDetachedEvent() {
+ public MIDetachedEvent(int token) {
+ super(token);
}
public String toString() {
Index: src/org/eclipse/cdt/debug/mi/core/event/MIEvent.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/event/MIEvent.java,v
retrieving revision 1.2
diff -u -r1.2 MIEvent.java
--- src/org/eclipse/cdt/debug/mi/core/event/MIEvent.java 26 Aug 2002 05:24:14 -0000 1.2
+++ src/org/eclipse/cdt/debug/mi/core/event/MIEvent.java 26 Oct 2002 20:20:36 -0000
@@ -8,4 +8,14 @@
/**
*/
public abstract class MIEvent {
+
+ int token;
+
+ public MIEvent(int token) {
+ this.token = token;
+ }
+
+ public int getToken() {
+ return token;
+ }
}
Index: src/org/eclipse/cdt/debug/mi/core/event/MIFunctionFinishedEvent.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/event/MIFunctionFinishedEvent.java,v
retrieving revision 1.3
diff -u -r1.3 MIFunctionFinishedEvent.java
--- src/org/eclipse/cdt/debug/mi/core/event/MIFunctionFinishedEvent.java 27 Aug 2002 03:47:09 -0000 1.3
+++ src/org/eclipse/cdt/debug/mi/core/event/MIFunctionFinishedEvent.java 26 Oct 2002 20:20:35 -0000
@@ -26,12 +26,14 @@
MIExecAsyncOutput exec;
MIResultRecord rr;
- public MIFunctionFinishedEvent(MIExecAsyncOutput record) {
- exec = record;
+ public MIFunctionFinishedEvent(MIExecAsyncOutput async) {
+ super(async.getToken());
+ exec = async;
parse();
}
public MIFunctionFinishedEvent(MIResultRecord record) {
+ super(record.getToken());
rr = record;
parse();
}
Index: src/org/eclipse/cdt/debug/mi/core/event/MIGDBExitEvent.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/event/MIGDBExitEvent.java,v
retrieving revision 1.1
diff -u -r1.1 MIGDBExitEvent.java
--- src/org/eclipse/cdt/debug/mi/core/event/MIGDBExitEvent.java 26 Aug 2002 05:24:14 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/event/MIGDBExitEvent.java 26 Oct 2002 20:20:36 -0000
@@ -11,4 +11,8 @@
* Gdb Session terminated.
*/
public class MIGDBExitEvent extends MIEvent {
+
+ public MIGDBExitEvent(int token) {
+ super(token);
+ }
}
Index: src/org/eclipse/cdt/debug/mi/core/event/MIInferiorExitEvent.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/event/MIInferiorExitEvent.java,v
retrieving revision 1.4
diff -u -r1.4 MIInferiorExitEvent.java
--- src/org/eclipse/cdt/debug/mi/core/event/MIInferiorExitEvent.java 7 Oct 2002 17:18:39 -0000 1.4
+++ src/org/eclipse/cdt/debug/mi/core/event/MIInferiorExitEvent.java 26 Oct 2002 20:20:35 -0000
@@ -26,15 +26,18 @@
MIExecAsyncOutput exec = null;
MIResultRecord rr = null;
- public MIInferiorExitEvent() {
+ public MIInferiorExitEvent(int token) {
+ super(token);
}
- public MIInferiorExitEvent(MIExecAsyncOutput record) {
- exec = record;
+ public MIInferiorExitEvent(MIExecAsyncOutput async) {
+ super(async.getToken());
+ exec = async;
parse();
}
public MIInferiorExitEvent(MIResultRecord record) {
+ super(record.getToken());
rr = record;
parse();
}
Index: src/org/eclipse/cdt/debug/mi/core/event/MILocationReachedEvent.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/event/MILocationReachedEvent.java,v
retrieving revision 1.3
diff -u -r1.3 MILocationReachedEvent.java
--- src/org/eclipse/cdt/debug/mi/core/event/MILocationReachedEvent.java 27 Aug 2002 03:47:09 -0000 1.3
+++ src/org/eclipse/cdt/debug/mi/core/event/MILocationReachedEvent.java 26 Oct 2002 20:20:50 -0000
@@ -24,12 +24,14 @@
MIExecAsyncOutput exec;
MIResultRecord rr;
- public MILocationReachedEvent(MIExecAsyncOutput record) {
- exec = record;
+ public MILocationReachedEvent(MIExecAsyncOutput async) {
+ super(async.getToken());
+ exec = async;
parse();
}
public MILocationReachedEvent(MIResultRecord record) {
+ super(record.getToken());
rr = record;
parse();
}
Index: src/org/eclipse/cdt/debug/mi/core/event/MIMemoryChangedEvent.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/event/MIMemoryChangedEvent.java,v
retrieving revision 1.1
diff -u -r1.1 MIMemoryChangedEvent.java
--- src/org/eclipse/cdt/debug/mi/core/event/MIMemoryChangedEvent.java 19 Oct 2002 19:20:55 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/event/MIMemoryChangedEvent.java 26 Oct 2002 20:20:36 -0000
@@ -14,7 +14,13 @@
public class MIMemoryChangedEvent extends MIChangedEvent {
Long[] addresses;
+
public MIMemoryChangedEvent(Long[] addrs) {
+ this(0, addrs);
+ }
+
+ public MIMemoryChangedEvent(int token, Long[] addrs) {
+ super(token);
addresses = addrs;
}
Index: src/org/eclipse/cdt/debug/mi/core/event/MIRegisterChangedEvent.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/event/MIRegisterChangedEvent.java,v
retrieving revision 1.1
diff -u -r1.1 MIRegisterChangedEvent.java
--- src/org/eclipse/cdt/debug/mi/core/event/MIRegisterChangedEvent.java 2 Oct 2002 04:55:21 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/event/MIRegisterChangedEvent.java 26 Oct 2002 20:20:35 -0000
@@ -13,19 +13,20 @@
*/
public class MIRegisterChangedEvent extends MIChangedEvent {
- String regName;
- int regno;
+ String regName;
+ int regno;
- public MIRegisterChangedEvent(String name, int no) {
- regName = name;
- regno = no;
- }
+ public MIRegisterChangedEvent(int token, String name, int no) {
+ super(token);
+ regName = name;
+ regno = no;
+ }
- public String getName() {
- return regName;
- }
+ public String getName() {
+ return regName;
+ }
- public int getNumber() {
- return regno;
- }
+ public int getNumber() {
+ return regno;
+ }
}
Index: src/org/eclipse/cdt/debug/mi/core/event/MIRunningEvent.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/event/MIRunningEvent.java,v
retrieving revision 1.5
diff -u -r1.5 MIRunningEvent.java
--- src/org/eclipse/cdt/debug/mi/core/event/MIRunningEvent.java 9 Oct 2002 14:08:42 -0000 1.5
+++ src/org/eclipse/cdt/debug/mi/core/event/MIRunningEvent.java 26 Oct 2002 20:20:50 -0000
@@ -23,7 +23,8 @@
int type;
- public MIRunningEvent(int t) {
+ public MIRunningEvent(int token, int t) {
+ super(token);
type = t;
}
Index: src/org/eclipse/cdt/debug/mi/core/event/MISignalEvent.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/event/MISignalEvent.java,v
retrieving revision 1.4
diff -u -r1.4 MISignalEvent.java
--- src/org/eclipse/cdt/debug/mi/core/event/MISignalEvent.java 27 Aug 2002 03:47:09 -0000 1.4
+++ src/org/eclipse/cdt/debug/mi/core/event/MISignalEvent.java 26 Oct 2002 20:20:36 -0000
@@ -27,12 +27,14 @@
MIExecAsyncOutput exec;
MIResultRecord rr;
- public MISignalEvent(MIExecAsyncOutput record) {
- exec = record;
+ public MISignalEvent(MIExecAsyncOutput async) {
+ super(async.getToken());
+ exec = async;
parse();
}
public MISignalEvent(MIResultRecord record) {
+ super(record.getToken());
rr = record;
parse();
}
Index: src/org/eclipse/cdt/debug/mi/core/event/MISteppingRangeEvent.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/event/MISteppingRangeEvent.java,v
retrieving revision 1.3
diff -u -r1.3 MISteppingRangeEvent.java
--- src/org/eclipse/cdt/debug/mi/core/event/MISteppingRangeEvent.java 27 Aug 2002 03:47:09 -0000 1.3
+++ src/org/eclipse/cdt/debug/mi/core/event/MISteppingRangeEvent.java 26 Oct 2002 20:20:36 -0000
@@ -25,12 +25,14 @@
MIExecAsyncOutput exec;
MIResultRecord rr;
- public MISteppingRangeEvent(MIExecAsyncOutput record) {
- exec = record;
+ public MISteppingRangeEvent(MIExecAsyncOutput async) {
+ super(async.getToken());
+ exec = async;
parse();
}
public MISteppingRangeEvent(MIResultRecord record) {
+ super(record.getToken());
rr = record;
parse();
}
Index: src/org/eclipse/cdt/debug/mi/core/event/MIStoppedEvent.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/event/MIStoppedEvent.java,v
retrieving revision 1.2
diff -u -r1.2 MIStoppedEvent.java
--- src/org/eclipse/cdt/debug/mi/core/event/MIStoppedEvent.java 9 Oct 2002 14:08:42 -0000 1.2
+++ src/org/eclipse/cdt/debug/mi/core/event/MIStoppedEvent.java 26 Oct 2002 20:20:36 -0000
@@ -13,6 +13,7 @@
*/
public class MIStoppedEvent extends MIEvent {
- public MIStoppedEvent() {
+ public MIStoppedEvent(int token) {
+ super(token);
}
}
Index: src/org/eclipse/cdt/debug/mi/core/event/MIThreadExitEvent.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/event/MIThreadExitEvent.java,v
retrieving revision 1.2
diff -u -r1.2 MIThreadExitEvent.java
--- src/org/eclipse/cdt/debug/mi/core/event/MIThreadExitEvent.java 19 Oct 2002 19:21:05 -0000 1.2
+++ src/org/eclipse/cdt/debug/mi/core/event/MIThreadExitEvent.java 26 Oct 2002 20:20:36 -0000
@@ -15,6 +15,11 @@
int tid;
public MIThreadExitEvent(int id) {
+ this(0, id);
+ }
+
+ public MIThreadExitEvent(int token, int id) {
+ super(token);
tid = id;
}
Index: src/org/eclipse/cdt/debug/mi/core/event/MIVarChangedEvent.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/event/MIVarChangedEvent.java,v
retrieving revision 1.3
diff -u -r1.3 MIVarChangedEvent.java
--- src/org/eclipse/cdt/debug/mi/core/event/MIVarChangedEvent.java 19 Oct 2002 19:21:14 -0000 1.3
+++ src/org/eclipse/cdt/debug/mi/core/event/MIVarChangedEvent.java 26 Oct 2002 20:20:36 -0000
@@ -16,7 +16,8 @@
String varName;
boolean inScope;
- public MIVarChangedEvent(String var, boolean scope) {
+ public MIVarChangedEvent(int token, String var, boolean scope) {
+ super(token);
varName = var;
inScope = scope;
}
Index: src/org/eclipse/cdt/debug/mi/core/event/MIWatchpointScopeEvent.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/event/MIWatchpointScopeEvent.java,v
retrieving revision 1.1
diff -u -r1.1 MIWatchpointScopeEvent.java
--- src/org/eclipse/cdt/debug/mi/core/event/MIWatchpointScopeEvent.java 6 Sep 2002 20:18:34 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/event/MIWatchpointScopeEvent.java 26 Oct 2002 20:20:35 -0000
@@ -26,12 +26,14 @@
MIExecAsyncOutput exec;
MIResultRecord rr;
- public MIWatchpointScopeEvent(MIExecAsyncOutput record) {
- exec = record;
+ public MIWatchpointScopeEvent(MIExecAsyncOutput async) {
+ super(async.getToken());
+ exec = async;
parse();
}
public MIWatchpointScopeEvent(MIResultRecord record) {
+ super(record.getToken());
rr = record;
parse();
}
Index: src/org/eclipse/cdt/debug/mi/core/event/MIWatchpointTriggerEvent.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/event/MIWatchpointTriggerEvent.java,v
retrieving revision 1.1
diff -u -r1.1 MIWatchpointTriggerEvent.java
--- src/org/eclipse/cdt/debug/mi/core/event/MIWatchpointTriggerEvent.java 6 Sep 2002 20:18:34 -0000 1.1
+++ src/org/eclipse/cdt/debug/mi/core/event/MIWatchpointTriggerEvent.java 26 Oct 2002 20:20:36 -0000
@@ -29,12 +29,14 @@
MIExecAsyncOutput exec;
MIResultRecord rr;
- public MIWatchpointTriggerEvent(MIExecAsyncOutput record) {
- exec = record;
+ public MIWatchpointTriggerEvent(MIExecAsyncOutput async) {
+ super(async.getToken());
+ exec = async;
parse();
}
public MIWatchpointTriggerEvent(MIResultRecord record) {
+ super(record.getToken());
rr = record;
parse();
}
Index: src/org/eclipse/cdt/debug/mi/core/output/MIResultRecord.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/output/MIResultRecord.java,v
retrieving revision 1.7
diff -u -r1.7 MIResultRecord.java
--- src/org/eclipse/cdt/debug/mi/core/output/MIResultRecord.java 8 Aug 2002 04:07:00 -0000 1.7
+++ src/org/eclipse/cdt/debug/mi/core/output/MIResultRecord.java 26 Oct 2002 20:20:51 -0000
@@ -20,7 +20,7 @@
String resultClass = "";
int token = -1;
- public int geToken() {
+ public int getToken() {
return token;
}