CodeLLDB v1.2.2 Release Notes

Release Date: 2019-03-30 // over 3 years ago
  • ๐Ÿ›  Fixed

    • ๐Ÿ”ง Debug configuration generation from Cargo.toml when using recent Cargo versions.

    ๐Ÿ›  Fixed (native adapter only)

    • LLDB command completions inserting duplicate tokens in some cases.
    • Remote debugging when using QEMU debug stub.
    • Spurious stop events at the beginning of a debug session.

    ๐Ÿ†• New (native adapter only)

    • Implemented hit conditions on breakpoints.
    • โšก๏ธ More informative error messages when displaying optimized-out variables, invalid pointers, etc.
    • Announce executed scripts (e.g. initCommands, preRunCommands), for easier attribution of script errors.
    • ๐Ÿ‘Œ Support ",[<number>]" format specifier, which reinterprets the displayed value as an array of <number> elements.

    Heads up: CodeLLDB is moving to native code.

    Up until now, CodeLLDB's debug adapter has been based on whatever version of the LLDB was installed on the local machine, with Python scripts providing the glue between LLDB API and VS Code. This arrangement has its benefits: the extension can be very compact and platform-independent. The flip side of using an externally-provided LLDB, is that it may happen to be quite old and buggy. There had been quite a few problems reported because of that. I've also been somewhat ๐ŸŽ dissatisfied with CodeLLDB's performance and stability, which I attribute to the use of Python in a project that has long grown past being "just a simple script".

    As a consequence, I've decided to try a new approach:

    • Pre-built LLDB binaries will be provided with the extension. This will ensure that it is used with the same ๐Ÿ”– version of LLDB engine as it was tested with. (In order to reduce the download size, native binaries will not be included ๐Ÿ“ฆ in the initial installation package published on VS Code Marketplace. Instead, a smaller, platform-targeted package will be downloaded on first use.)
    • Most of Python code had been ported to a statically-typed compiled language (Rust).

    For now, both implementations of the debug adapter will exist in parallel. You can choose which one is used by setting lldb.adapterType to either classic or native in your workspace settings. 0๏ธโƒฃ In a few versions, I plan to make native the default, and then, eventually, the only option.

    Please give the native adapter a try and let me know how that worked for you, and, especially, if it didn't. Thanks!