diff options
author | Alain Magloire | 2003-05-25 02:29:46 +0000 |
---|---|---|
committer | Alain Magloire | 2003-05-25 02:29:46 +0000 |
commit | 98d353076630333627803e5415d7d1f3cab8c0c2 (patch) | |
tree | 3685dc6320b63bb77f010a7d655deeae47c3ca1a /debug/org.eclipse.cdt.debug.mi.core/design.txt | |
parent | a694d99ff6bf93ed162762b6590054edef75b3d7 (diff) | |
download | org.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.txt | 36 |
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] |