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