[sanitizer] Improve FreeBSD ASLR detection
[llvm-project.git] / lldb / docs / status / goals.rst
blobc5c236c5a4607126222655f3542db3e08dcbbed0
1 Goals
2 =====
4 The current state of the art in open source debuggers are that they work in the
5 common cases for C applications, but don't handle many "hard cases" properly.
6 For example, C++ expression parsing, handling overloading, templates,
7 multi-threading, and other non-trivial scenarios all work in some base cases,
8 but don't work reliably.
10 The goal of LLDB is to provide an amazing debugging experience that "just
11 works". We aim to solve these long-standing problems where debuggers get
12 confused, so that you can think about debugging your problem, not about
13 deficiencies in the debugger.
15 With a long view, there is no good reason for a debugger to reinvent its own
16 C/C++ parser, type system, know all the target calling convention details,
17 implement its own disassembler, etc. By using the existing libraries vended by
18 the LLVM project, we believe that many of these problems will be defined away,
19 and the debugger can focus on important issues like process control, efficient
20 symbol reading and indexing, thread management, and other debugger-specific
21 problems.
23 Some more specific goals include:
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
35 Why a New Debugger?
36 -------------------
38 In order to achieve our goals we decided to start with a fresh architecture
39 that would support modern multi-threaded programs, handle debugging symbols in
40 an efficient manner, use compiler based code knowledge and have plug-in support
41 for functionality and extensions. Additionally we want the debugger
42 capabilities to be available to other analysis tools, be they scripts or
43 compiled programs, without requiring them to be GPL.