aboutsummaryrefslogtreecommitdiff
path: root/tools/lldb-mi/MIReadMe.txt
diff options
context:
space:
mode:
authorEd Maste <emaste@FreeBSD.org>2015-07-03 16:57:06 +0000
committerEd Maste <emaste@FreeBSD.org>2015-07-03 16:57:06 +0000
commit5e95aa85bb660d45e9905ef1d7180b2678280660 (patch)
tree3c2e41c3be19b7fc7666ed45a5f91ec3b6e35f2a /tools/lldb-mi/MIReadMe.txt
parent12bd4897ff0678fa663e09d78ebc22dd255ceb86 (diff)
downloadsrc-5e95aa85bb660d45e9905ef1d7180b2678280660.tar.gz
src-5e95aa85bb660d45e9905ef1d7180b2678280660.zip
Import LLDB as of upstream SVN 241361 (git 612c075f)vendor/lldb/lldb-r241361
Notes
Notes: svn path=/vendor/lldb/dist/; revision=285101 svn path=/vendor/lldb/lldb-r241361/; revision=285102; tag=vendor/lldb/lldb-r241361
Diffstat (limited to 'tools/lldb-mi/MIReadMe.txt')
-rw-r--r--tools/lldb-mi/MIReadMe.txt254
1 files changed, 15 insertions, 239 deletions
diff --git a/tools/lldb-mi/MIReadMe.txt b/tools/lldb-mi/MIReadMe.txt
index 47d28e395ede..bc3d4a8d5e5c 100644
--- a/tools/lldb-mi/MIReadMe.txt
+++ b/tools/lldb-mi/MIReadMe.txt
@@ -1,261 +1,37 @@
========================================================================
The MI Driver - LLDB Machine Interface V2 (MI) Project Overview
- 24/07/2014
========================================================================
The MI Driver is a stand alone executable that either be used via a
client i.e. Eclipse or directly from the command line.
-All the files in this directory are required to build the MI executable.
-The executable is intended to compile and work on the following platforms:
-
- Windows (Vista or newer) (Compiler: Visual C++ 12)
- LINUX (Compiler: gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1)
- OSX (Not tested)
-
-THe MI Driver has two modes of operation; LLDB and MI. The MI Driver (CMIDriver)
-which operates the MI mode is a driver in its own right to work alongside
-the LLDB driver (driver .h/.cpp). Only one is operatational at a time depending
-on the options entered on the command line. The MI Driver reads MI inputs and
-outputs MI responses to be interpreted by a client i.e. Eclipse.
-Should the MI Driver not understand an instruction it could be passed to the
-LLDB driver for interpretation (MI Driver build configuration dependant). Should
-the LLDB driver mode be chosen then it the MI Driver will behave as the normal
-LLDB driver.
-
For help information on using the MI driver type at the command line:
lldb-mi --interpreter --help
-A blog about the MI Driver is available on CodePlay's website
-http://www.codeplay.com/portal/.
+A blog about the MI Driver is available on CodePlay's website. ALthough it may not be
+completely accurate after the recent changes in lldb-mi.
+http://www.codeplay.com/portal/lldb-mi-driver---part-1-introduction
-The MI Driver produces a MILog.txt file which records the actions of the MI
-Driver when in the MI mode only.
+In MI mode and invoked with --log option, lldb-mi generates lldb-mi-log.txt
+This file keeps a history of the MI Driver's activity for one session. It is
+used to aid the debugging of the MI Driver. It also gives warnings about
+command's which do not support certain argument or options.
Note any command or text sent to the MI Driver in MI mode that is not a command
-registered in the MI Driver's Command Factory will be rejected given an error.
-
-The MILogfile.txt keeps a history of the MI Driver's activity for one session
-only. It is used to aid the debugging of the MI Driver in MI mode only. As well
-as recorded commands that are recognised by the MI Driver it also gives warnings
-about command's which do not support certain argument or options.
+registered in the MI Driver's Command Factory will be rejected and an error messsage
+will be generated.
All the files prefix with MI are specifically for the MI driver code only.
-Non prefixed code is the original LLDB driver which has been left untouched
-as much as possible. This allows the LLDB driver code to develop
-independently and make future integration more straight forward.
-
-File MIDriverMain.cpp contains the executables main() function and some
-common global functions common to the two drivers.
+File MIDriverMain.cpp contains the executables main() function.
=========================================================================
Current limitations:
-1. Commands implemented likely not to have all their arguments supported
-2. The MI Driver has only been tested with Eclipse Juno with an in-house
- plugin
-3. Local target has been implemented but not tested
-4. The MI Driver has been designed primarily to work in a 'remote-target'
- mode only. The MI Driver does not currently except arguments beyond
- those described above.
-5. The MI Driver does not accept as arguments an executable to create a
- target instance.
-6. Not all MI commands have been implemented. See section MI Driver
- commands for those that have been fully or partially implemented (not
- indicated - see command class).
-7. Not necessarily a limitation but the MI Driver is used with Codeplay's
- own Eclipse plugin (not supplied) which has allowed more control over
- the interaction with the MI Driver between Eclipse.
-
-=========================================================================
-Versions:
-1.0.0.1 First version from scratch 28/1/2014 to 28/3/2014.
- MI working alpha. MI framework not complete.
-1.0.0.2 First deliverable to client 7/3/2014.
- MI working beta. MI framework not complete.
-1.0.0.3 Code refactor tidy. Release to community for evaluation
- 7/5/2014.
- MI working beta - code refactored and tidied. MI framework
- complete. Just missing commands (which may still require
- changes).
-1.0.0.4 Post release to community for evaluation 7/5/2014.
- 1. MI command token now optional
- 2. MI command token is now fixed length
- 3. New commands added see section "MI commands implemented are:"
- 4. Able to debug a local target as well as remote target
- 5. MI Driver now sends to the client "(gdb)" + '\n' on
- initialising
- 6. Improve coverage of parsing and fix command argument parsing
- 7. Fix bug with stdin thinking there was no input when there was which
- caused communication between the client and the MI Driver to halt
- due to internal buffering, we now keep track of it ourself.
- 8. Code comment fixes and additions. Code style fixes.
- 9. MI Driver now on receiving Ctrl-C (SIGINT) when the client pauses
- an inferior program does not quit but continues operating.
- 10.Fix commands "var-update", "var-evaluate-expression" to which did
- not send back information to correctly update arrays and structures.
- 11.Commands "Not implemented" are now not registered to the command
- factory except for GDB command "thread". Commands not registered
- with the command factory produce MI error message "...not in
- Command Factory". (Removed from command section in this readme.txt)
-1.0.0.5 Second deliverable to client 16/6/2014.
-1.0.0.6 Post release of second deliverable to client 16/6/2014.
- Released to the community 24/6/2014.
- 1. The MI Driver has a new option --noLog. If present the MI Driver
- does not output progress or status messages to it's log file.
- 2. Moved OS specific handling of the stdin stream to their own class
- implementations so any changes to one handler will not affect
- another OS's handler.
- 3. The session data/information map for sharing data between commands
- now uses a variant object which enables objects of different types
- to be stored instead of previously just text information.
- 4. Debug session var object create, update and retrieve efficiency
- improved by using a map type container.
- 5. Re-enable the MI Driver's command line option --interpreter (see
- --help). Up until now it was implementented but not enforced, it
- was always the MI Driver interpreter.
- 6. Re-enable the compilation of the original LLDB driver code into
- the MI Driver's code. See MICmnConfig.h for build configuration.
-1.0.0.7 Post release to community. Delivered to client 30/6/2014.
- 1. Fix MI Driver's output of "(gdb)" appearing when running in LLDB
- mode (no --interpreter argument)'
- 2. Fix command "interpret-exec" to allow commands to be entered
- directly in the IDE console.
-1.0.0.8 Post release to client. Delivered to client 29/07/2014
- 1. Fix command "break-insert" argument -f not accepting file paths
- as a string. Looked like the MI Driver was not accepting LINUX
- style file paths in the Windows version and vice versa.
- 2. Fix command "stack-list-arguments" handling only the current
- stack frame. Eclipse now shows variables for all frames.
- 3. Fix and improve MI response for sending back information on
- stack local variables, stack arguments and stack frame selection.
- 4. Fix recursive crash when asking to gather information on link
- lists.
- 5. Fix MI Driver's Log date and time field.
- 6. Fix MI response return from event 'StopReason' and 'Breakpoint-
- hit'.
- 7. Fix command "environment-cd" to handle paths with spaces in the
- path.
- 8. Fix not displaying backtrace (stack) variable information when
- choosing frames other than the current frame.
- 9. Fix command "data-evaluate-expression" to be able to handle
- valid SBValue objects but have no value object name. Fix same
- command to handle expressions surround by string format inserted
- quotes.
- 10.Fix command "break-insert" to handle file location that is
- surrounded by quotes.
- 11.For commands "var-create" and "data-evaluate-expression" improve
- variable type handling for quoted expressions.
- 12.Implement command "inferior-tty-set". It just responds with
- "^Done".
- 13.Improve the MI Driver's help description.
- 14.Fix file name paths that contained '.', '-' and '_' in the path
- as being treated as invalid.
- 15.Fix trying to interpret escapse character text as an errorous
- command.
-1.0.0.9 Post release to client.
-
-=========================================================================
-MI Driver Commands
-MI commands below are written to work for Eclipse Juno 7.4. If may be
-one are more commands required by other IDEs are missing or do not
-support all arguments or options. Additionally some commands may handle
-additional arguments or options not documented here
-https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Data-Manipulation.html#GDB_002fMI-Data-Manipulation.
-The implemented commands are:
-CMICmdCmdBreakAfter
-CMICmdCmdBreakCondition
-CMICmdCmdBreakDelete
-CMICmdCmdBreakDisable
-CMICmdCmdBreakEnable
-CMICmdCmdBreakInsert
-CMICmdCmdDataEvaluateExpression
-CMICmdCmdDataDisassemble
-CMICmdCmdDataListRegisterChanged
-CMICmdCmdDataListRegisterNames
-CMICmdCmdDataListRegisterValues
-CMICmdCmdDataReadMemory
-CMICmdCmdDataReadMemoryBytes
-CMICmdCmdDataWriteMemory
-CMICmdCmdEnablePrettyPrinting
-CMICmdCmdEnvironmentCd
-CMICmdCmdExecContinue
-CMICmdCmdExecFinish
-CMICmdCmdExecInterrupt
-CMICmdCmdExecNext
-CMICmdCmdExecNextInstruction
-CMICmdCmdExecRun
-CMICmdCmdExecStep
-CMICmdCmdExecStepInstruction
-CMICmdCmdFileExecAndSymbols
-CMICmdCmdGdbExit
-CMICmdCmdGdbInfo
-CMICmdCmdGdbSet
-CMICmdCmdGdbSet - solib-search-path option
-CMICmdCmdInferiorTtySet (not functionally implemented)
-CMICmdCmdInterpreterExec
-CMICmdCmdListThreadGroups
-CMICmdCmdSource
-CMICmdCmdStackInfoDepth
-CMICmdCmdStackListArguments
-CMICmdCmdStackListFrames
-CMICmdCmdStackListLocals
-CMICmdCmdSupportInfoMiCmdQuery
-CMICmdCmdSupportListFeatures
-CMICmdCmdTargetSelect
-CMICmdCmdThread
-CMICmdCmdThreadInfo
-CMICmdCmdTraceStatus (not functionally implemented)
-CMICmdCmdVarAssign
-CMICmdCmdVarCreate
-CMICmdCmdVarDelete
-CMICmdCmdVarEvaluateExpression
-CMICmdCmdVarInfoPathExpression
-CMICmdCmdVarListChildren
-CMICmdCmdVarSetFormat
-CMICmdCmdVarShowAttributes
-CMICmdCmdVarUpdate
+1. Not all commands and their options have been implemented. Please see
+the source code for details.
+2. LLDB-MI may have additinal arguments not used in GDB MI. Please see
+MIExtesnsions.txt
=========================================================================
The MI Driver build configuration:
-MICmnConfig.h defines various preprocessor build options i.e. enable
-LLDB driver fall through (Driver.h/.cpp) should MI Driver not recognise a
-command (option not fully implemented - may be removed in the future).
-
-=========================================================================
-Code standard, documentation and code style scope:
-The coding style and coding documentation scope covers all MI prefixed
-files and where MI code is implemented in the LLDB driver files. Should
-you wish to make improvements or fixes to the MI code (which is encouraged)
-please DO comment your code in the style already applied. The same applies
-to the coding style. Class names should also follow this lead and ideally
-should be one class per file (.h/.cpp). Class interface files (.h) should
-not contain any implementation code unless there is a performance issue or
-templated functions. You get the idea, look around the existing code and
-follow by example :)
-
-Where code comment or documentation is wrong or can be improved to help
-others then it is strongly encouraged you DO improve the documentation.
-
-=========================================================================
-MI Driver license:
-The MI Driver code is under the University of Illinois Open Source License
-agreement. Submitted by Codeplay Ltd UK.
-
-Source code found at: llvm/tools/lldb/tools/lldb-mi.
-
-=========================================================================
-The MI Driver uses the following libraries:
-Standard Template library
- Thread
- Containers
- String
- File
- Time
-LLDB public API
-OS specific
- OS error reporting windows
- OS error handling OSX (not implemented)
- OS error handling LINUX (not implemented)
-
-
+MICmnConfig.h defines various preprocessor build options.