diff options
Diffstat (limited to 'debug/org.eclipse.cdt.debug.mi.core/design.txt')
-rw-r--r-- | debug/org.eclipse.cdt.debug.mi.core/design.txt | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/debug/org.eclipse.cdt.debug.mi.core/design.txt b/debug/org.eclipse.cdt.debug.mi.core/design.txt deleted file mode 100644 index 782d0275725..00000000000 --- a/debug/org.eclipse.cdt.debug.mi.core/design.txt +++ /dev/null @@ -1,110 +0,0 @@ -<html> -<head> -</head> -<body> -<pre> -Note this is an interim the document and subject to changes. - - -**** -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 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 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 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 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 to MISession observers, clients interested -in notifications should register to the MISession. - -* MI Parsing -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 = 10 - - ResultClass = "done" - - MIResult[1] - - MIResult[0] - - variable = "bkpt" - - value = MITuple - - MIResult[9] - - MiResult[0] - - variable = "number" - - MIConst = "1" - - MiResult[1] - - variable = "type" - - MIConst = "breakpoint" - - MiResult[2] - - variable = "disp" - - MIConst = "keep" - - MiResult[3] - - variable = "enabled" - - MIConst = "y" - - MiResult[4] - - variable = "addr" - - MIConst = "0x08048468" - - MiResult[5] - - variable = "func" - - MIConst = "main" - - MiResult[6] - - variable = "file" - - MIConst = "hello.c" - - MiResult[7] - - variable = "line" - - MIConst = "4" - - MiResult[8] - - variable = "times" - - MIConst = "0" - -MICommands will do there own parsing: - session = MISession(in, out); - MIBreakInsert cmd = new MIBreakInsert("main"); - session.postCommand(cmd); // sent to gdb. - MIBreakInsertInfo info = cmd.getBreakInsertInfo(); // Parsing of the Result Record. - -**** -MI Process - -For convienience, to java.lang.Process is provided. - - MISession.getSessionProcess(); - -This Process talks directly to gdb and is smart enough to wrap any command -in CLICommand etc .. - - MISession.getMIInferior() - -MIInferior implements Process for the Inferiror. - -***** -MI <==> CDI Adapters - - To do. -</pre> -</body> -</html> |