You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
2.0 KiB
45 lines
2.0 KiB
4 months ago
|
Goals
|
||
|
=====
|
||
|
|
||
|
The current state of the art in open source debuggers are that they work in the
|
||
|
common cases for C applications, but don't handle many "hard cases" properly.
|
||
|
For example, C++ expression parsing, handling overloading, templates,
|
||
|
multi-threading, and other non-trivial scenarios all work in some base cases,
|
||
|
but don't work reliably.
|
||
|
|
||
|
The goal of LLDB is to provide an amazing debugging experience that "just
|
||
|
works". We aim to solve these long-standing problems where debuggers get
|
||
|
confused, so that you can think about debugging your problem, not about
|
||
|
deficiencies in the debugger.
|
||
|
|
||
|
With a long view, there is no good reason for a debugger to reinvent its own
|
||
|
C/C++ parser, type system, know all the target calling convention details,
|
||
|
implement its own disassembler, etc. By using the existing libraries vended by
|
||
|
the LLVM project, we believe that many of these problems will be defined away,
|
||
|
and the debugger can focus on important issues like process control, efficient
|
||
|
symbol reading and indexing, thread management, and other debugger-specific
|
||
|
problems.
|
||
|
|
||
|
Some more specific goals include:
|
||
|
|
||
|
* Build libraries for inclusion in IDEs, command line tools, and other analysis
|
||
|
tools
|
||
|
* High performance and efficient memory use
|
||
|
* Extensible: Python scriptable and use a plug-in architecture
|
||
|
* Reuse existing compiler technology where it makes sense
|
||
|
* Excellent multi-threaded debugging support
|
||
|
* Great support for C, Objective-C and C++
|
||
|
* Retargetable to support multiple platforms
|
||
|
* Provide a base for debugger research and other innovation
|
||
|
|
||
|
Why a New Debugger?
|
||
|
-------------------
|
||
|
|
||
|
In order to achieve our goals we decided to start with a fresh architecture
|
||
|
that would support modern multi-threaded programs, handle debugging symbols in
|
||
|
an efficient manner, use compiler based code knowledge and have plug-in support
|
||
|
for functionality and extensions. Additionally we want the debugger
|
||
|
capabilities to be available to other analysis tools, be they scripts or
|
||
|
compiled programs, without requiring them to be GPL.
|
||
|
|