Home LLDBPyGUI - GUI for LLDB Debugger Python API with PyQt6
Post
Cancel

LLDBPyGUI - GUI for LLDB Debugger Python API with PyQt6

LLDBPyGUI

  • VERSION: 0.0.2 - “Developer Preview” as of 2025-07-16 13:20:59

LLDBPyGUI

Old version

LLDBPyGUI

Synopsis

LLDBPyGUI is a longtime missed gui of mine for the opensource debugger (framework) LLDB. While LLDB comes with a comperhensive set of tools and also a C++ and Python API. It lacks of providing a useful (at least for me) GUI as it’s only working as a terminal application at this day of age. So I took some time and started a GUI wrapper project that is using the Python API of LLDB and began to implement a UI with the help of PyQt6. The project is still in a really early prototype stage at the moment, but I didn’t want to let you miss the idea of mine and give you a short sneak-preview of the tool I have in mind.

Movie Trailer

Features

  • General info about the target executable and linked libraries
  • Disassembler / Debugger
  • Stacktrace viewer
  • Break- and Watchpoints
  • Register / Variable viewer
  • Synchronized source code view
  • Memory viewer
  • Search function
  • Commands interface (for lldb cmds)

Requirements (Important)

The following requirements are strictly needed. You might get the python scripts to load in earlier lldb / clang versions, but you are strictly advised to use at least version 22.0.0git because of the buggy nature of older LLDB Python API versions. Test it at your own risk and expense, no support or help will be provided for setting LLDBPyGUI up in older LLDB / LLVM versions.

macOS

  • macOS Sequoia >= 15.1.1 - At the moment LLDBPyGUI is soly developed and tested on macOS 15.1.1. You are encouraged to test it on other os versions or systems -at your own risk and expense of course. Every seriouse feedback is very welcome and will be noticed and processed personally by meyself.

LLDB Python API base

  • lldb version 22.0.0git
  • clang version 22.0.0git

Setup / Installation

Compile LLDB (LLVM)

To use LLDBPyGUI you need to have lldb and clang installed and working with python scripting option enabled. Usually the preinstalled versions (~=16.0.0) of this appss are outdated and will lead to many headaches and problems while using all the features of LLDBPyGUI to debug executables or libraries. So the current version of LLDBPyGUI is tailored only for LLDB v. 22.0.0git and above, troubles with other versions are your own problem and will not be supported.

Configure cmake

1
dave@Aeon ~ % cmake -S llvm -B build -G Ninja -DLLVM_ENABLE_PROJECTS="clang;lldb" -DCMAKE_BUILD_TYPE=Release -DLLDB_INCLUDE_TESTS=OFF -DLLDB_ENABLE_PYTHON=ON -DPython3_ROOT_DIR=/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9

Build with cmake

1
dave@Aeon ~ % cmake --build build
1
2
3
4
dave@Aeon ~ % lldb --version 
lldb version 22.0.0git (https://github.com/llvm/llvm-project.git revision 16a0892a9db1825ffa5e42b801e13215418d93b9)
  clang revision 16a0892a9db1825ffa5e42b801e13215418d93b9
  llvm revision 16a0892a9db1825ffa5e42b801e13215418d93b9

How to install and run the app

To install the LLDBPyGUI app to LLDB you have to amend the .lldbinit file in you users home directory like so:

1
command script import /<pathToGuiScripts>/lldbpyGUI.py

(~/.lldbinit file)

To run the python app start a lldb instance with

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
dave@Aeon ~ % lldb
(LLDBPyGUI) pyg
#=================================================================================#
| Starting TEST ENVIRONMENT for LLDBPyGUI (ver. 0.0.2 - DEV PREVIEW)              |
|                                                                                 |
| Desc:                                                                           |
| This python script is for development and testing while development             |
| of the LLDB python GUI (LLDBPyGUI.py) - use at own risk! No Warranty!           |
|                                                                                 |
| Credits:                                                                        |
| - LLDB                                                                          |
| - lldbutil.py                                                                   |
| - lui.py                                                                        |
|                                                                                 |
| Author / Copyright:                                                             |
| Kim David Hauser (JeTeDonner), (C.) by kimhauser.ch 1991-2025                   |
#=================================================================================#

Old Version

1
2
3
dave@Aeon ~ % lldb
[+] Loaded LLDBPyGUI version 0.0.1 - ALPHA PREVIEW (BUILD: 689)
(LLDBPyGUI) spg

Community contribution

As you can see this project is still under construction and not finished yet. So far I did what I could and what I thought was useful and would be needed. But let’s face it, the product is not final yet and every help or contribution is very welcome. If you think this tool is useful for you but is missing some important function you need, please don’t hesitate to contact me personally or even better send me any pull request via github. I really think this project is worth a glimp and could help many developers. Please keep in mind, that at this stage you have to meet several really specific conditions which are crucial for running this early Developer Preview of LLDBPyGUI.

Disclaimer

Please keep in mind, that this release is only a really early Alpha release version that is intend to give you a first preview of what the app will look and function like. There is no waranty or garantie of working functionality or working feature what so ever. Anyhow every feedback or input from your side is very welcome as this will give me an idea what is important to you as an end user. So please feel free to send me any feedback about the app and your opinion. Thank you!

Documentation

Download / Github

Credits

LLDB

Python libs

Images and Icons

This post is licensed under CC BY 4.0 by the author.