LLDB currently converts debug information into clang types so that it can leverage the clang compiler infrastructure. This allows LLDB to support the latest C, C++, Objective C and Objective C++ language features and runtimes in expressions without having to reimplement any of this functionality. It also leverages the compiler to take care of all ABI details when making functions calls for expressions, when disassembling instructions and extracting instruciton details, and much more.
The major benefits include:
  • Up to date language support for C, C++, Objective C
  • Multi-line expressions that can declare local variables and types
  • Utilitize the JIT for expressions when supported
  • Evaluate expression Intermediate Representation (IR) when JIT can't be used