Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlain Magloire2003-05-25 02:29:46 +0000
committerAlain Magloire2003-05-25 02:29:46 +0000
commit98d353076630333627803e5415d7d1f3cab8c0c2 (patch)
tree3685dc6320b63bb77f010a7d655deeae47c3ca1a /debug/org.eclipse.cdt.debug.mi.core/design.txt
parenta694d99ff6bf93ed162762b6590054edef75b3d7 (diff)
downloadorg.eclipse.cdt-98d353076630333627803e5415d7d1f3cab8c0c2.tar.gz
org.eclipse.cdt-98d353076630333627803e5415d7d1f3cab8c0c2.tar.xz
org.eclipse.cdt-98d353076630333627803e5415d7d1f3cab8c0c2.zip
Fix typos.
Diffstat (limited to 'debug/org.eclipse.cdt.debug.mi.core/design.txt')
-rw-r--r--debug/org.eclipse.cdt.debug.mi.core/design.txt36
1 files changed, 22 insertions, 14 deletions
diff --git a/debug/org.eclipse.cdt.debug.mi.core/design.txt b/debug/org.eclipse.cdt.debug.mi.core/design.txt
index 5542af6d32c..56c274540b7 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/design.txt
+++ b/debug/org.eclipse.cdt.debug.mi.core/design.txt
@@ -11,34 +11,42 @@ This MI implementation is base on GDB/MI 5.2.1.
* Command/Response channels
To create an MISession an InputStream and OutputStream are
-needed(assuming this the pipe connected to gdb).
- MISession MIPlugin.createSession(InputStream, OutputStream);
+needed(assuming it is the pipe connected to gdb).
+
+ MISession misession = new MISession(InputStream, OutputStream);
+
During initialisation of the session(MISession) two threads
-are created(TxThread, RxThread). MI Commands created via the CommandFactory
+are created TxThread, RxThread and associative list queues
+TxQueue and RxQueue:
+- The RxThread thread is block on readig the output of the pipe(gdb) for
+any responses.
+- The TxThread thread is block waiting for command.
+
+MI Commands are created via the CommandFactory and
are added to the TxQueue, the TxThread will then wake up
-generate a token(ID) for the command and send it the pipe(gdb), after
+generate a token(ID) for the command and send it to the pipe(gdb), after
transmission the command is then move to the RxQueue waiting for the
result(MIResultRecord).
-Any responses will wake the RxThread, the thread would parse
-the response constructing an MIOutput then search the RxQueue
+Any responses will wake the RxThread, the thread will parse
+the response constructing an MIOutput, then it searches the RxQueue
for any commands with the same token waking any thread waiting
for a synchronous response(MIResultRecord). Any out-of-band
-responses(MIOOBRecord) are dispatch, clients interested in those
-notifications should register to MISession.
+responses(MIOOBRecord) are dispatch to MISession observers, clients interested
+in notifications should register to the MISession.
* MI Parsing
-There is a generic MI parser (MIParser) constructing an Abstract
-Syntax Tree. For example, a ResultRecord response after a
-break-insert, the parser will generate this AST:
- -break-insert main
- ^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",
+There is a generic MI parser (MIParser) constructing an syntax tree of the output.
+For example, a ResultRecord response after a "-break-insert", the parser will
+generate this tree:
+ 10-break-insert main
+ 10^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",
addr="0x08048468",func="main",file="hello.c",line="4",times="0"}
- MIOutput
- MIOOBRecord[0]
- MIResutRecord
- - token = 0
+ - token = 10
- ResultClass = "done"
- MIResult[1]
- MIResult[0]

Back to the top