1Goals 2===== 3 4The current state of the art in open source debuggers are that they work in the 5common cases for C applications, but don't handle many "hard cases" properly. 6For example, C++ expression parsing, handling overloading, templates, 7multi-threading, and other non-trivial scenarios all work in some base cases, 8but don't work reliably. 9 10The goal of LLDB is to provide an amazing debugging experience that "just 11works". We aim to solve these long-standing problems where debuggers get 12confused, so that you can think about debugging your problem, not about 13deficiencies in the debugger. 14 15With a long view, there is no good reason for a debugger to reinvent its own 16C/C++ parser, type system, know all the target calling convention details, 17implement its own disassembler, etc. By using the existing libraries vended by 18the LLVM project, we believe that many of these problems will be defined away, 19and the debugger can focus on important issues like process control, efficient 20symbol reading and indexing, thread management, and other debugger-specific 21problems. 22 23Some more specific goals include: 24 25* Build libraries for inclusion in IDEs, command line tools, and other analysis 26 tools 27* High performance and efficient memory use 28* Extensible: Python scriptable and use a plug-in architecture 29* Reuse existing compiler technology where it makes sense 30* Excellent multi-threaded debugging support 31* Great support for C, Objective-C and C++ 32* Retargetable to support multiple platforms 33* Provide a base for debugger research and other innovation 34 35Why a New Debugger? 36------------------- 37 38In order to achieve our goals we decided to start with a fresh architecture 39that would support modern multi-threaded programs, handle debugging symbols in 40an efficient manner, use compiler based code knowledge and have plug-in support 41for functionality and extensions. Additionally we want the debugger 42capabilities to be available to other analysis tools, be they scripts or 43compiled programs, without requiring them to be GPL. 44 45