blob: de4e87ddb199d07b5b9eef850ed995ba063e8672 [file] [log] [blame]
Greg Clayton854bb532010-06-10 02:48:57 +00001<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head>
4<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
5<link href="style.css" rel="stylesheet" type="text/css" />
6<title>LLDB Goals</title>
7</head>
8
9<body>
10 <div class="www_title">
11 The <strong>LLDB</strong> Debugger
12 </div>
13
14<div id="container">
15 <div id="content">
16 <div id="left">
17 <div class="urbangreymenu">
18 <h1 class="headerbar">General</h1>
19 <ul>
20 <li><a href="index.html">About</a></li>
21 <li><a href="architecture.html">Architecture</a></li>
22 <li><a href="docs.html">Documentation</a></li>
23 <li><a href="faq.html">FAQ</a></li>
24 <li><a href="features.html">Features</a></li>
25 <li><a href="goals.html">Goals</a></li>
26 <li><a href="status.html">Status</a></li>
27 </ul>
28 </div>
29 <div class="menu">
30 <div class="urbangreymenu">
31 <h1 class="headerbar">Mailing Lists</h1>
32 <ul>
33 <li><a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev">lldb-dev</a></li>
34 <li><a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits">lldb-commits</a></li>
35 </ul>
36 </div>
37 </div>
38 <div class="menu">
39 <div class="urbangreymenu">
40 <h1 class="headerbar">Source</h1>
41 <ul>
42 <li><a href="download.html">Download</a></li>
43 <li><a href="http://llvm.org/bugs">Bug Reports</a></li>
44 <li><a href="http://llvm.org/svn/llvm-project/lldb/trunk">Browse SVN</a></li>
45 <li><a href="http://llvm.org/viewvc/llvm-project/lldb/trunk">Browse ViewVC</a></li>
46 </ul>
47 </div>
48 </div>
49 </div>
50 <div id="middle">
51 <div class="post">
52 <h1 class ="postheader">Goals</h1>
53 <div class="postcontent">
54
55 <p>The current state of the art in open source debuggers are that
56 they work in the common cases for C applications, but don't
57 handle many "hard cases" properly. For example, C++ expression
58 parsing, handling overloading, templates, multi-threading, and
59 other non-trivial scenarios all work in some base cases, but
60 don't work reliably.</p>
61
62 <p>The goal of LLDB is to provide an amazing debugging experience that "just
63 works". We aim to solve these long-standing problems where debuggers get
64 confused, so that you can think about debugging your problem, not
65 about deficiencies in the debugger.</p>
66
67 <p>With a long view, there is no good reason for a debugger to
68 reinvent its own C/C++ parser, type system, know all the
69 target calling convention details, implement its own disassembler,
70 etc. By using the existing libraries vended by the LLVM
71 project, we believe that many of these problems will be defined
72 away, and the debugger can focus on important issues like
73 process control, efficient symbol reading and indexing, thread
74 management, and other debugger-specific problems.</p>
75
76 <p>Some more specific goals include:</p>
77
78 <ul>
79 <li>Build libraries for inclusion in IDEs, command line tools, and
80 other analysis tools</li>
81 <li>High performance and efficient memory use</li>
82 <li>Extensible: Python scriptable and use a plug-in architecture</li>
83 <li>Reuse existing compiler technology where it makes sense</li>
84 <li>Excellent multi-threaded debugging support</li>
85 <li>Great support for C, Objective-C and C++</li>
86 <li>Retargetable to support multiple platforms</li>
87 <li>Provide a base for debugger research and other innovation</li>
88 </ul>
89 </div>
90 <div class="postfooter"></div>
91 </div>
92 </div>
93</div>
94</body>
95</html>