xref: /openbsd-src/gnu/llvm/lldb/docs/status/goals.rst (revision 061da546b983eb767bad15e67af1174fb0bcf31c)
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