Debug Adapter Protocol
The Debug Adapter Protocol (DAP) defines a generic protocol for editors to talk to a debugger. Popular editors with DAP support include Visual Studio Code, Sublime Text, (Neo)vim and Emacs.
If you’re familiar with the Language Server Protocol (LSP) you can think of DAP like LSP, but for debugging.
Implementations of the debug adapter protocol generally come in two forms:
- An extension tailored to a specific editor.
- A standalone DAP server that can be used with any editor that supports the protocol.
LLDB supports both:
- LLDB DAP is the Visual Studio Code extension available on the Marketplace.
lldb-dap
(formerlylldb-vscode
) is the DAP server.
The Visual Studio Code extension uses lldb-dap
under the hood.
Configuration
Most editors will require two kinds of configuration:
-
Configuring the DAP server: For your editor to talk to the DAP server, it needs to know where to find it. This generally requires either specifying the path to
lldb-dap
or having it available inPATH
. This is also true for the LLDB VS Code extension as the extension does not contain the actuallldb-dap
server binary. -
Configuring launch/attach: To debug an application you need to either launch it under the debugger or attach to existing project. This is generally tied to your project and editor. For example, VS Code uses a launch configuration file.
Installation
Like LLDB itself, lldb-dap
is part of the LLVM project, and can be installed
the same way you would install lldb
:
- macOS:
brew install llvm
- Ubuntu:
apt install lldb
- Arch Linux:
pacman -S lldb
New: Starting with Xcode 16, lldb-dap
is now part of Xcode and Command
Line Tools. You can run it directly with xcrun lldb-dap
or find its location
with xcrun -f lldb-dap
.
PS: Older versions of lldb-dap
were called lldb-vscode
. Besides the name
and lldb-vscode
being older, the two binaries are interchangeable.