This is an old revision of the document!
FreeBSD LLDB port
Background
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, and Windows. This page describes the ongoing work to bring the FreeBSD LLDB port to completion.
Links
- FreeBSD-hosted FreeBSD amd64 buildbot (last 200 builds) (2014-11-26: currently offline)
Installation
FreeBSD HEAD (in-tree LLDB snapshot)
FreeBSD-HEAD contains a snapshot of LLDB at upstream revision r225923 (as of the last update of this wiki page). It is not yet built by default and may be enabled 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.
Previous snapshot versions in FreeBSD:
| SVN | git | Version |
|---|---|---|
| 196322 | 49c127a | |
| 202189 | 32871eb0 | 3.5 |
| 216948 | 50f7fe44 | 3.6 |
FreeBSD HEAD or 10 (upstream LLDB tree)
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
FreeBSD 9 (upstream LLDB tree)
Install the ports / packages listed above for FreeBSD 10, and also install:
- libexecinfo
and build and install libc++:
cd /usr/src/lib/libcxxrt CXX=clang++ make all install clean cd /usr/src/lib/libc++ CXX=clang++ make all install clean
Virtual Machine
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.1 Release | Most recent release |
| FreeBSD 11.0-CURRENT | Subversion HEAD development snapshot |
Quick start instructions:
- Log in as root on the console
- Run “ifconfig -l” to list network interfaces The virtual nic will likely be em0 or vtnet0 depending on the VM software.
- Add to /etc/rc.conf (assuming vtnet0 interface here):
ifconfig_vtnet0="DHCP" sshd_enable="YES"
- Run
pkgand answer Y to install the package management tool - Run
pkg install git python27 cmake ninja swig13 zsh - Run
adduserto create a user account - Run
shutdown -r nowto reboot - ssh to the VM as your user account and follow the steps below under “Checkout and Build”.
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
- For details on the need for -std=c++11 see http://lists.cs.uiuc.edu/pipermail/lldb-dev/2013-November/002755.html
CC=andCXX=are required for 9.x builds only; clang is the default compiler on 10.0 and later.
Status
| 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 |
|---|---|---|
| aarch64 | Unstarted | Unstarted |
| amd64 | Works | Works |
| arm | Unknown | Unknown |
| i386 | In progress | In progress |
| mips | Unknown | In progress |
| mips64 | Unknown | In progress |
| powerpc | In progress | In progress |
| powerpc64 | In progress | In progress |
Tasks
- Investigate and fix open PRs. To find annotated failing or skipped tests, try:
find test -name '*.py' -print0 | xargs -r0 egrep 'skipIfFreeBSD|expectedFailureFreeBSD'