| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> |
| <link href="style.css" rel="stylesheet" type="text/css" /> |
| <title>LLDB Homepage</title> |
| </head> |
| |
| <body> |
| <div class="www_title"> |
| The <strong>LLDB</strong> Debugger |
| </div> |
| |
| <div id="container"> |
| <div id="content"> |
| |
| <!--#include virtual="sidebar.incl"--> |
| |
| <div id="middle"> |
| <div class="post"> |
| <h1 class ="postheader">What is LLDB?</h1> |
| <div class="postcontent"> |
| <p>LLDB is a next generation, high-performance debugger. It is built as a set |
| of reusable components which highly leverage existing libraries in the |
| larger LLVM Project, such as the Clang expression parser and LLVM |
| disassembler.</p> |
| <p>LLDB is the default debugger in Xcode on Mac OS X and supports |
| debugging C, Objective-C and C++ on the desktop and iOS devices and simulator.</p> |
| |
| <p>All of the code in the LLDB project is available under the standard |
| <a href="http://llvm.org/docs/DeveloperPolicy.html#license">LLVM |
| License</a>, an open source "BSD-style" license.</p> |
| </div> |
| <div class="postfooter"></div> |
| </div> |
| |
| <div class="post"> |
| <h1 class ="postheader">Why a new debugger?</h1> |
| <div class="postcontent"> |
| <p>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.</p> |
| </div> |
| <div class="postfooter"></div> |
| </div> |
| |
| <div class="post"> |
| <h1 class ="postheader">Compiler Integration Benefits</h1> |
| <div class="postcontent"> |
| <p>LLDB currently converts debug information into clang types so that |
| it can leverage the clang compiler infrastructure. |
| This allows LLDB to support the latest C, C++, Objective-C and Objective-C++ |
| language features and runtimes in expressions without having to reimplement <b>any</b> |
| of this functionality. It also leverages the compiler to take care of all ABI |
| details when making functions calls for expressions, when disassembling |
| instructions and extracting instruction details, and much more. |
| <p>The major benefits include:</p> |
| <ul> |
| <li>Up to date language support for C, C++, Objective-C</li> |
| <li>Multi-line expressions that can declare local variables and types</li> |
| <li>Utilize the JIT for expressions when supported</li> |
| <li>Evaluate expression Intermediate Representation (IR) when JIT can't be used</li> |
| </ul> |
| </div> |
| </div> |
| |
| <div class="post"> |
| <h1 class ="postheader">Reusability</h1> |
| <div class="postcontent"> |
| <p>The LLDB debugger APIs are exposed as a C++ object oriented interface in a shared library. |
| The <b>lldb</b> command line tool links to, and uses this public API. On Mac OS X the shared library |
| is exposed as a framework named <b>LLDB.framework</b>, and unix systems expose it as <b>lldb.so</b>. |
| The entire API is also then exposed through Python script bindings which allow the API to be used |
| within the LLDB embedded script interpreter, and also in any python script that loads the <b>lldb.py</b> |
| module in standard python script files. See the <a href="python-reference.html">Python Reference</a> page for more details on how |
| and where Python can be used with the LLDB API.</p> |
| <p>Sharing the LLDB API allows LLDB to not only be used for debugging, but also for symbolication, |
| disassembly, object and symbol file introspection, and much more. |
| </div> |
| </div> |
| |
| <div class="post"> |
| <h1 class ="postheader">Platform Support</h1> |
| <div class="postcontent"> |
| |
| <p>LLDB is known to work on the following platforms, but ports to new |
| platforms are welcome:</p> |
| <ul> |
| <li>Mac OS X desktop user space debugging for i386 and x86-64</li> |
| <li>iOS simulator debugging on i386</li> |
| <li>iOS device debugging on ARM</li> |
| <li>Linux local user-space debugging for i386, x86-64 and PPC64le</li> |
| <li>FreeBSD local user-space debugging for i386 and x86-64</li> |
| <li>Windows local user-space debugging for i386 (*)</li> |
| </ul> |
| <p>(*) Support for Windows is under active development. Basic functionality |
| is expected to work, with functionality improving rapidly.</p> |
| </div> |
| <div class="postfooter"></div> |
| </div> |
| |
| |
| <div class="post"> |
| <h1 class ="postheader">Get it and get involved!</h1> |
| <div class="postcontent"> |
| |
| <p>To check out the code, use:</p> |
| |
| <ul> |
| <li>svn co http://llvm.org/svn/llvm-project/lldb/trunk lldb</li> |
| </ul> |
| |
| <p>Note that LLDB generally builds from top-of-trunk</p> |
| <ul> |
| <li>On Mac OS X with Xcode</li> |
| <li>On Linux and FreeBSD (with clang and libstdc++/libc++)</li> |
| <li>On NetBSD (with GCC and clang and libstdc++/libc++)</li> |
| <li>On Windows with VS 2012 or higher using CMake</li> |
| </ul> |
| <p>See the <a href="build.html">LLDB Build Page</a> for platform-specific build instructions.</p> |
| <p>Discussions about LLDB should go to the <a href="http://lists.llvm.org/mailman/listinfo/lldb-dev">lldb-dev</a> mailing |
| list. Commit messages for the lldb SVN module are automatically sent to the |
| <a href="http://lists.llvm.org/mailman/listinfo/lldb-commits">lldb-commits</a> |
| mailing list, and this is also the preferred mailing list for patch |
| submissions.</p> |
| <p>See the <a href="projects.html">Projects</a> page if you are looking for some interesting areas to contribute |
| to lldb.</p> |
| </div> |
| <div class="postfooter"></div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </body> |
| </html> |