"""LLDB has been structured from the beginning to be scriptable in two ways – a Unix Python session can initiate/run a debug session non-interactively using LLDB; and within the LLDB debugger tool, Python scripts can be used to help with many tasks, including inspecting program data, iterating over containers and determining if a breakpoint should stop execution or continue."""
> Extend your favorite C++ compiler with a flag that generates python bindings for all data variable symbols.
The linked-to lldb documentation has a section on "Accessing & Manipulating Program Variables". I'm pretty sure it can all be built though the existing clang debug info.
Sounds pretty neat to access and visualize the inner workings of a C/C++ program as a program which works like an attached debugger.
When I debug, sometimes I write code which pretty-prints the object to stdout, and then execute that inline ("evaluate expression") when I need to.
It may be kind of hacky but it works well and it's super easy to implement. As a bonus, you usually end up pretty-printing the object in some debug-logger anyways.
5 comments
[ 0.16 ms ] story [ 23.7 ms ] threadlike lldb? https://lldb.llvm.org/use/python.html
"""LLDB has been structured from the beginning to be scriptable in two ways – a Unix Python session can initiate/run a debug session non-interactively using LLDB; and within the LLDB debugger tool, Python scripts can be used to help with many tasks, including inspecting program data, iterating over containers and determining if a breakpoint should stop execution or continue."""
> Extend your favorite C++ compiler with a flag that generates python bindings for all data variable symbols.
The linked-to lldb documentation has a section on "Accessing & Manipulating Program Variables". I'm pretty sure it can all be built though the existing clang debug info.
Sounds pretty neat to access and visualize the inner workings of a C/C++ program as a program which works like an attached debugger.
It seems that this is an area that hasn't seen much progress over the years.
It may be kind of hacky but it works well and it's super easy to implement. As a bonus, you usually end up pretty-printing the object in some debug-logger anyways.
https://youtu.be/pvkn9Xz-xks