Greg Clayton | 854bb53 | 2010-06-10 02:48:57 +0000 | [diff] [blame] | 1 | <!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 Homepage</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">
|
Chris Lattner | 1c3318a | 2010-06-11 23:04:20 +0000 | [diff] [blame] | 16 |
|
| 17 | <!--#include virtual="sidebar.incl"-->
|
| 18 |
|
Greg Clayton | 854bb53 | 2010-06-10 02:48:57 +0000 | [diff] [blame] | 19 | <div id="middle">
|
| 20 | <div class="post">
|
| 21 | <h1 class ="postheader">What is LLDB?</h1>
|
| 22 | <div class="postcontent">
|
| 23 | <p>LLDB is a next generation, high-performance debugger. It is built as a set
|
| 24 | of reusable components which highly leverage existing libraries in the
|
| 25 | larger LLVM Project, such as the Clang expression parser and LLVM
|
| 26 | disassembler.</p>
|
Greg Clayton | 04720ae | 2012-02-22 18:01:09 +0000 | [diff] [blame] | 27 | <p>LLDB is the default debugger in Xcode on Mac OS X and supports
|
| 28 | debugging C, Objective-C and C++ on the desktop and iOS devices and simulator.</p>
|
Greg Clayton | 854bb53 | 2010-06-10 02:48:57 +0000 | [diff] [blame] | 29 |
|
| 30 | <p>All of the code in the LLDB project is available under the standard
|
| 31 | <a href="http://llvm.org/docs/DeveloperPolicy.html#license">LLVM
|
| 32 | License</a>, an open source "BSD-style" license.</p>
|
| 33 | </div>
|
| 34 | <div class="postfooter"></div>
|
| 35 | </div>
|
| 36 |
|
| 37 | <div class="post">
|
| 38 | <h1 class ="postheader">Why a new debugger?</h1>
|
| 39 | <div class="postcontent">
|
| 40 | <p>In order to achieve our goals we decided to start with a fresh architecture
|
| 41 | that would support modern multi-threaded programs, handle debugging symbols
|
| 42 | in an efficient manner, use compiler based code knowledge and have plug-in
|
| 43 | support for functionality and extensions. Additionally we want the debugger
|
| 44 | capabilities to be available to other analysis tools, be they scripts or
|
| 45 | compiled programs, without requiring them to be GPL.</p>
|
| 46 | </div>
|
| 47 | <div class="postfooter"></div>
|
| 48 | </div>
|
| 49 |
|
| 50 | <div class="post">
|
Greg Clayton | 04720ae | 2012-02-22 18:01:09 +0000 | [diff] [blame] | 51 | <h1 class ="postheader">Compiler Integration Benefits</h1>
|
| 52 | <div class="postcontent">
|
| 53 | <p>LLDB currently converts debug information into clang types so that
|
| 54 | it can leverage the clang compiler infrastructure.
|
| 55 | This allows LLDB to support the latest C, C++, Objective C and Objective C++
|
| 56 | language features and runtimes in expressions without having to reimplement <b>any</b>
|
| 57 | of this functionality. It also leverages the compiler to take care of all ABI
|
| 58 | details when making functions calls for expressions, when disassembling
|
| 59 | instructions and extracting instruciton details, and much more.
|
| 60 | <p>The major benefits include:</p>
|
| 61 | <ul>
|
| 62 | <li>Up to date language support for C, C++, Objective C</li>
|
| 63 | <li>Multi-line expressions that can declare local variables and types</li>
|
| 64 | <li>Utilitize the JIT for expressions when supported</li>
|
| 65 | <li>Evaluate expression Intermediate Representation (IR) when JIT can't be used</li>
|
| 66 | </ul>
|
| 67 | </div>
|
| 68 | </div>
|
| 69 |
|
| 70 | <div class="post">
|
| 71 | <h1 class ="postheader">Reusability</h1>
|
| 72 | <div class="postcontent">
|
| 73 | <p>The LLDB debugger APIs are exposed as a C++ object oriented interface in a shared library.
|
| 74 | The <b>lldb</b> command line tool links to, and uses this public API. On Mac OS X the shared library
|
Johnny Chen | 9792d5c | 2012-02-22 19:02:32 +0000 | [diff] [blame] | 75 | is exposed as a framework named <b>LLDB.framework</b>, and unix systems expose it as <b>lldb.so</b>.
|
Greg Clayton | 04720ae | 2012-02-22 18:01:09 +0000 | [diff] [blame] | 76 | The entire API is also then exposed through Python script bindings which allow the API to be used
|
| 77 | within the LLDB embedded script interpreter, and also in any python script that loads the <b>lldb.py</b>
|
| 78 | module in standard python script files. See the <a href="python-reference.html">Python Reference</a> page for more details on how
|
| 79 | and where Python can be used with the LLDB API.</p>
|
| 80 | <p>Sharing the LLDB API allows LLDB to not only be used for debugging, but also for symbolication,
|
| 81 | disassembly, object and symbol file introspection, and much more.
|
| 82 | </div>
|
| 83 | </div>
|
| 84 |
|
| 85 | <div class="post">
|
Greg Clayton | 854bb53 | 2010-06-10 02:48:57 +0000 | [diff] [blame] | 86 | <h1 class ="postheader">Platform Support</h1>
|
| 87 | <div class="postcontent">
|
| 88 |
|
| 89 | <p>LLDB is known to work on the following platforms, but ports to new
|
| 90 | platforms are welcome:</p>
|
| 91 | <ul>
|
Greg Clayton | 04720ae | 2012-02-22 18:01:09 +0000 | [diff] [blame] | 92 | <li>Mac OS X desktop user space debugging for i386 and x86-64</li>
|
| 93 | <li>iOS simulator debugging on i386</li>
|
| 94 | <li>iOS device debugging on ARM</li>
|
Daniel Malea | 31f7c43 | 2012-11-12 22:32:00 +0000 | [diff] [blame] | 95 | <li>Linux local user-space debugging for i386 and x86-64</li>
|
| 96 | <li>FreeBSD local user-space debugging for i386 and x86-64</li>
|
Greg Clayton | 854bb53 | 2010-06-10 02:48:57 +0000 | [diff] [blame] | 97 | </ul>
|
| 98 | </div>
|
| 99 | <div class="postfooter"></div>
|
| 100 | </div>
|
| 101 |
|
| 102 |
|
| 103 | <div class="post">
|
| 104 | <h1 class ="postheader">Get it and get involved!</h1>
|
| 105 | <div class="postcontent">
|
| 106 |
|
| 107 | <p>To check out the code, use:</p>
|
| 108 |
|
| 109 | <ul>
|
| 110 | <li>svn co http://llvm.org/svn/llvm-project/lldb/trunk lldb</li>
|
| 111 | </ul>
|
| 112 |
|
Daniel Malea | 31f7c43 | 2012-11-12 22:32:00 +0000 | [diff] [blame] | 113 | <p>Note that LLDB generally builds from top-of-trunk on Mac OS X with
|
| 114 | Xcode and on Linux (with clang and libstdc++/libc++). </p>
|
Greg Clayton | 854bb53 | 2010-06-10 02:48:57 +0000 | [diff] [blame] | 115 |
|
| 116 | <p>Discussions about LLDB should go to the <a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev">lldb-dev</a> mailing
|
| 117 | list. Commit messages for the lldb SVN module are automatically sent to the
|
| 118 | <a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits">lldb-commits</a>
|
| 119 | mailing list, and this is also the preferred mailing list for patch
|
| 120 | submissions.</p>
|
| 121 | </div>
|
| 122 | <div class="postfooter"></div>
|
| 123 | </div>
|
| 124 | </div>
|
| 125 | </div>
|
| 126 | </div>
|
| 127 | </body>
|
Daniel Malea | 31f7c43 | 2012-11-12 22:32:00 +0000 | [diff] [blame] | 128 | </html>
|