Joerg Sonnenberger | 340a175 | 2013-09-25 10:37:32 +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"> |
| 16 | |
| 17 | <!--#include virtual="sidebar.incl"--> |
| 18 | |
| 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> |
| 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> |
| 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"> |
| 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 |
Bruce Mitchener | 6a7f333 | 2014-06-27 02:42:12 +0000 | [diff] [blame] | 59 | instructions and extracting instruction details, and much more. |
Joerg Sonnenberger | 340a175 | 2013-09-25 10:37:32 +0000 | [diff] [blame] | 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> |
Bruce Mitchener | b61f89e | 2015-09-07 13:03:07 +0000 | [diff] [blame] | 64 | <li>Utilize the JIT for expressions when supported</li> |
Joerg Sonnenberger | 340a175 | 2013-09-25 10:37:32 +0000 | [diff] [blame] | 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 |
| 75 | is exposed as a framework named <b>LLDB.framework</b>, and unix systems expose it as <b>lldb.so</b>. |
| 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"> |
| 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> |
| 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> |
| 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> |
Zachary Turner | 34d2173 | 2014-12-31 00:06:49 +0000 | [diff] [blame] | 97 | <li>Windows local user-space debugging for i386 (*)</li> |
Joerg Sonnenberger | 340a175 | 2013-09-25 10:37:32 +0000 | [diff] [blame] | 98 | </ul> |
Zachary Turner | 34d2173 | 2014-12-31 00:06:49 +0000 | [diff] [blame] | 99 | <p>(*) Support for Windows is under active development. Basic functionality |
| 100 | is expected to work, with functionality improving rapidly.</p> |
Joerg Sonnenberger | 340a175 | 2013-09-25 10:37:32 +0000 | [diff] [blame] | 101 | </div> |
| 102 | <div class="postfooter"></div> |
| 103 | </div> |
| 104 | |
| 105 | |
| 106 | <div class="post"> |
| 107 | <h1 class ="postheader">Get it and get involved!</h1> |
| 108 | <div class="postcontent"> |
| 109 | |
| 110 | <p>To check out the code, use:</p> |
| 111 | |
| 112 | <ul> |
| 113 | <li>svn co http://llvm.org/svn/llvm-project/lldb/trunk lldb</li> |
| 114 | </ul> |
| 115 | |
Zachary Turner | 34d2173 | 2014-12-31 00:06:49 +0000 | [diff] [blame] | 116 | <p>Note that LLDB generally builds from top-of-trunk</p> |
| 117 | <ul> |
| 118 | <li>On Mac OS X with Xcode</li> |
| 119 | <li>On Linux and FreeBSD (with clang and libstdc++/libc++)</li> |
Kamil Rytarowski | e81c156 | 2015-12-05 19:41:37 +0000 | [diff] [blame] | 120 | <li>On NetBSD (with GCC and clang and libstdc++/libc++)</li> |
Zachary Turner | 34d2173 | 2014-12-31 00:06:49 +0000 | [diff] [blame] | 121 | <li>On Windows with VS 2012 or higher using CMake</li> |
| 122 | </ul> |
| 123 | <p>See the <a href="build.html">LLDB Build Page</a> for platform-specific build instructions.</p> |
Tanya Lattner | 0b2f378 | 2015-08-05 04:02:43 +0000 | [diff] [blame] | 124 | <p>Discussions about LLDB should go to the <a href="http://lists.llvm.org/mailman/listinfo/lldb-dev">lldb-dev</a> mailing |
Joerg Sonnenberger | 340a175 | 2013-09-25 10:37:32 +0000 | [diff] [blame] | 125 | list. Commit messages for the lldb SVN module are automatically sent to the |
Tanya Lattner | 0b2f378 | 2015-08-05 04:02:43 +0000 | [diff] [blame] | 126 | <a href="http://lists.llvm.org/mailman/listinfo/lldb-commits">lldb-commits</a> |
Joerg Sonnenberger | 340a175 | 2013-09-25 10:37:32 +0000 | [diff] [blame] | 127 | mailing list, and this is also the preferred mailing list for patch |
| 128 | submissions.</p> |
Jim Ingham | 9d3e8e5 | 2017-03-02 21:45:39 +0000 | [diff] [blame^] | 129 | <p>See the <a href="projects.html">Projects</a> page if you are looking for some interesting areas to contribute |
| 130 | to lldb.</p> |
Joerg Sonnenberger | 340a175 | 2013-09-25 10:37:32 +0000 | [diff] [blame] | 131 | </div> |
| 132 | <div class="postfooter"></div> |
| 133 | </div> |
| 134 | </div> |
| 135 | </div> |
| 136 | </div> |
| 137 | </body> |
| 138 | </html> |