FreeBSD LLDB port

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:

  • python
  • swig (I used swig 1.3)
  • cmake
  • ninja
  • git

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:

  1. Log in as root on the console
  2. Run “ifconfig -l” to list network interfaces The virtual nic will likely be em0 or vtnet0 depending on the VM software.
  3. Add to /etc/rc.conf (assuming vtnet0 interface here):
ifconfig_vtnet0="DHCP"                                                       
sshd_enable="YES"                                                            
  1. Run dhclient vtnet0 to fetch an IP address for the current session.
  2. Run pkg and answer Y to install the package management tool
  3. Run pkg install git python27 cmake ninja swig13 zsh
  4. Run adduser to create a user account
  5. Run shutdown -r now to reboot
  6. ssh to the VM as your user account and follow the steps below under “Checkout and Build”.

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
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
  1. Investigate and fix open PRs. To find annotated failing or skipped tests, try:
find packages/Python/lldbsuite/test -name '*.py' -print0 | xargs -r0 egrep 'skipIfFreeBSD|expectedFailureFreeBSD'

  • lldb.txt
  • Last modified: 2026/10/12 10:55
  • (external edit)