Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'debug/org.eclipse.cdt.debug.mi.core/design.txt')
-rw-r--r--debug/org.eclipse.cdt.debug.mi.core/design.txt110
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 782d027572..0000000000
--- 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>

Back to the top