Announcing CodeLLDB v1.2.0

CodeLLDB is a Visual Studio Code extension for debugging native binaries using LLDB, the LLVM debugger.

I'd like to bring to your attention the new version released a few days ago. The main difference from previous releases is that in order to reduce variability of LLDB versions that need to be supported, I am testing the waters on providing a bundled LLDB along with the extension.

Why this is newsworthy for Rust devs: the bundled LLDB just happens to be a build of rust-lldb, a fork of LLDB with Rust extensions added in. You may have noticed that mainline builds of LLDB often can't properly display Rust-specific data types, most notably enums. Rust-lldb can parse the extended debug info and render Rust enums properly. It also can evaluate some types of Rust expressions, and more. [The credit for rust-lldb goes to @tromey!]

In order to use the "bundled" LLDB, add this setting to your workspace configuration: lldb.adapterType="bundled". Upon starting the next debug session, you will be prompted for permission to download and install native binaries for your platform (Linux, OSX or Windows). The debug session should proceed as normal after that.
To switch back, set adapterType to "classic" (or remove it).

I would be interested in hearing feedback on how smoothly this setup has worked for you, especially on Linux'es other than Ubuntu. Please file issues in CodeLLDB repo.


Other stuff:

On Windows, bundled LLDB adds support for debugging of 64-bit apps as well as partial support for PDB debug info format (i.e. *-pc-windows-msvc targets).

One further extra-experimental feature in v1.2.0 is the "native" debug adapter, where Python scripts had been replaced by a native binary, that runs faster, consumes less memory, and, hopefully, is less buggy due to the use of a statically typed language in its construction (guess which language that is :). The native adapter is still missing some features (e.g. HTML display API), but for the most part should work the same.

9 Likes

Just installed on flatpak works well. Months ago once tried it (rust install) but the runtime is missing lldb and didn't want to figure out how it install a custom copy.