LLDB, part of the LLVM family of projects, is a modern, high-performance source-level debugger. It supports (at some level) OS X, Linux, FreeBSD, NetBSD, and Windows. This page describes the ongoing work to bring the FreeBSD LLDB port to completion.
FreeBSD-HEAD contains LLDB release version 3.8 (as of the last update of this wiki page) and is typically updated along with Clang/LLVM. It is enabled by default on amd64 and arm64 and may be enabled elsewhere by adding WITH_LLDB=YES to /etc/src.conf, and then following a standard buildworld and installworld, or building directly in lib/clang and then usr.bin/clang/lldb.
Install the following ports / packages:
This can be accomplished by running:
pkg install git python cmake ninja swig13
LLDB developers working on other platforms who wish to test their changes on FreeBSD can start with a virtual machine image from the table below.
| Image Link | Description |
|---|---|
| FreeBSD 10.3 Release | Most recent release |
| FreeBSD 11.0-CURRENT | Subversion HEAD development snapshot |
Quick start instructions:
ifconfig_vtnet0="DHCP" sshd_enable="YES"
dhclient vtnet0 to fetch an IP address for the current session.pkg and answer Y to install the package management toolpkg install git python27 cmake ninja swig13 zshadduser to create a user account shutdown -r now to reboot I build LLDB with the in-tree Clang and libc++. It should also be possible to build with a recent GCC port installed (and dropping CC=, CXX=, and -stdlib= from the cmake line below), but I encountered a number of issues.
Checkout and build LLDB (assuming a Bourne shell):
git clone http://llvm.org/git/llvm.git cd llvm/tools git clone http://llvm.org/git/clang.git git clone http://llvm.org/git/lldb.git cd .. mkdir build cd build CC=clang CXX=clang++ cmake ../ -G Ninja -DCMAKE_CXX_FLAGS="-std=c++11 -stdlib=libc++ -I/usr/local/include/python2.7 -g" ninja lldb ninja check-lldb # if you want to run tests
CC= and CXX= are required for 9.x builds only; clang is the default compiler on 10.0 and later.| Feature | Status |
|---|---|
| process launch | Works |
| process attach (pid) | Works |
| process attach (name) | Works |
| userland core files | Works |
| Breakpoints | Works |
| Watchpoints | Works |
| Threads | Works |
| Testsuite | All non-passing tests have PRs |
| Remote debugging (gdbserver / debugserver) | In Progress |
| Kernel debugging | In progress (GSoC 2014) |
| Cross debugging | Untested |
| Architecture | Host Status | Target Status |
|---|---|---|
| amd64 | Works | Works |
| arm | Unknown | Unknown |
| arm64 (aarch64) | Works | Works |
| i386 | In progress | In progress |
| mips | Unknown | In progress |
| mips64 | Unknown | In progress |
| powerpc | In progress | In progress |
| powerpc64 | In progress | In progress |
find packages/Python/lldbsuite/test -name '*.py' -print0 | xargs -r0 egrep 'skipIfFreeBSD|expectedFailureFreeBSD'