{"id":13840203,"url":"https://github.com/zmeadows/lldbg","last_synced_at":"2026-03-13T04:07:35.691Z","repository":{"id":46731049,"uuid":"169003645","full_name":"zmeadows/lldbg","owner":"zmeadows","description":"A lightweight native GUI for LLDB.","archived":false,"fork":false,"pushed_at":"2024-07-08T00:13:31.000Z","size":7092,"stargazers_count":131,"open_issues_count":5,"forks_count":14,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-08-05T17:24:52.643Z","etag":null,"topics":["c","clang","cpp","debugger","gcc","gdb","gui","imgui","linux","lldb","llvm","macos","osx","unix"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zmeadows.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-02-03T23:01:28.000Z","updated_at":"2024-07-24T11:20:29.000Z","dependencies_parsed_at":"2022-07-26T15:32:08.601Z","dependency_job_id":null,"html_url":"https://github.com/zmeadows/lldbg","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zmeadows%2Flldbg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zmeadows%2Flldbg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zmeadows%2Flldbg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zmeadows%2Flldbg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zmeadows","download_url":"https://codeload.github.com/zmeadows/lldbg/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225705286,"owners_count":17511257,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","clang","cpp","debugger","gcc","gdb","gui","imgui","linux","lldb","llvm","macos","osx","unix"],"created_at":"2024-08-04T17:00:43.575Z","updated_at":"2026-03-13T04:07:35.685Z","avatar_url":"https://github.com/zmeadows.png","language":"C++","readme":"[![ci-linux](https://github.com/zmeadows/lldbg/actions/workflows/ci-linux.yml/badge.svg)](https://github.com/zmeadows/lldbg/actions/workflows/ci-linux.yml)\r\n[![ci-macos](https://github.com/zmeadows/lldbg/actions/workflows/ci-macos.yml/badge.svg)](https://github.com/zmeadows/lldbg/actions/workflows/ci-macos.yml)\r\n[![ci-windows](https://github.com/zmeadows/lldbg/actions/workflows/ci-windows.yml/badge.svg)](https://github.com/zmeadows/lldbg/actions/workflows/ci-windows.yml)\r\n[![code-quality](https://github.com/zmeadows/lldbg/actions/workflows/code-quality.yml/badge.svg)](https://github.com/zmeadows/lldbg/actions/workflows/code-quality.yml)\r\n\r\n---\r\nlldbg is a native GUI for lldb which is currently in alpha stage.\r\nRight now you *probably* shouldn't attempt to use it unless you want to contribute to the development in some way, either directly or by submitting issues.\r\nThe basic idea is to provide vim/emacs users with a lightweight, easy-to-compile, easy-to-use likeness of what you would see in a full-featured IDE debugger interface.\r\n\r\nPrimary goals are:\r\n* open/close and respond to user input instantly, 100% of the time\r\n* function intuitively so that 'using lldbg' is not a skill you have to learn\r\n* require no outside configuration files or complicated setup\r\n* the build should 'just work' on almost any system\r\n* launch with the many of the same command line options as lldb itself\r\n\r\n[Issues](https://github.com/zmeadows/lldbg/issues) are welcome.\r\n\r\n![alt text](https://raw.githubusercontent.com/zmeadows/lldbg/master/screenshot.png)\r\n\r\n## Install / Build (End Users)\r\n\r\n# Build \u0026 Run Guide — lldbgui\r\n\r\nThis repo ships CMake presets for two audiences:\r\n\r\n- **End users:** `user-release` — quick, optimized Release build with LTO; no dev extras.\r\n- **Developers:** `dev` — RelWithDebInfo + `compile_commands.json` for IDEs and tools.\r\n\r\nThe presets use the **Ninja** generator and place build trees under `build/\u003cpreset\u003e/`.\r\n\r\n\u003e Minimum tooling:\r\nCMake ≥ 3.20, Ninja, a C++17 compiler, and LLDB.\r\nImGui/GLFW/fmt/cxxopts are resolved automatically (system packages preferred; vendored fallbacks are pinned in `cmake/LLDBGDeps.cmake`).\r\nOpenGL is required.\r\n\r\n---\r\n\r\n## TL;DR\r\n\r\n```bash\r\n# Clone\r\ngit clone git@github.com:zmeadows/lldbg.git lldbg \u0026\u0026 cd lldbg\r\n\r\n# End users: fast Release build\r\ncmake --preset user-release\r\ncmake --build --preset user-release -j\r\n\r\n# Developers: debug info + compile_commands.json\r\ncmake --preset dev\r\ncmake --build --preset dev -j\r\n\r\n# Run (binary lives in the build tree)\r\n./build/user-release/lldbgui    # or: ./build/dev/lldbgui\r\n```\r\n\r\n---\r\n\r\n## 1) Platform prerequisites\r\n\r\n### macOS (Apple Silicon or Intel)\r\n\r\n- Install **Xcode Command Line Tools** (for AppleClang \u0026 SDKs):\r\n  ```bash\r\n  xcode-select --install\r\n  ```\r\n- Install Homebrew packages:\r\n  ```bash\r\n  brew install cmake ninja pkg-config fmt glfw cxxopts llvm\r\n  ```\r\n  To help CMake find the LLVM/LLDB config packages:\r\n  ```bash\r\n  export CMAKE_PREFIX_PATH=\"$(brew --prefix llvm):$(brew --prefix)\"\r\n  export LLVM_DIR=\"$(brew --prefix llvm)/lib/cmake/llvm\"\r\n  export LLDB_DIR=\"$(brew --prefix llvm)/lib/cmake/lldb\"\r\n  ```\r\n  \u003e On macOS, the build prefers **AppleClang** for ABI compatibility. If you see an error about non‑Apple Clang, either set:\r\n  ```bash\r\n  export CC=\"$(xcrun --find clang)\" CXX=\"$(xcrun --find clang++)\"\r\n  ```\r\n  or deliberately override with `-DLLDBG_ALLOW_NON_APPLECLANG=ON`.\r\n\r\n### Ubuntu/Debian\r\n\r\n```bash\r\nsudo apt-get update\r\nsudo apt-get install -y \\\r\n  build-essential ninja-build cmake pkg-config \\\r\n  clang lldb liblldb-dev \\\r\n  libgl1-mesa-dev\r\n```\r\n\u003e Notes:\r\n\u003e - If you prefer GCC, omit `clang` and rely on `gcc/g++`.\r\n\u003e - `libgl1-mesa-dev` provides OpenGL headers; GLFW/ImGui/fmt/cxxopts are fetched if not present.\r\n\r\n### Fedora\r\n\r\n```bash\r\nsudo dnf install -y \\\r\n  gcc-c++ clang ninja-build cmake pkg-config \\\r\n  lldb lldb-devel \\\r\n  mesa-libGL-devel\r\n```\r\n\r\n### Arch Linux\r\n\r\n```bash\r\nsudo pacman -S --needed \\\r\n  base-devel ninja cmake pkgconf \\\r\n  clang lldb \\\r\n  mesa\r\n```\r\n\r\n---\r\n\r\n## 2) End users — Release build (`user-release`)\r\n\r\nThis preset enables LTO and disables dev extras.\r\n\r\n```bash\r\ncmake --preset user-release\r\ncmake --build --preset user-release -j\r\n```\r\n\r\nArtifacts:\r\n- Binary: `build/user-release/lldbgui`\r\n\r\nOptional toggles (pass via `-D...` to the *configure* step):\r\n- `-DLLDBG_USE_SYSTEM_DEPS=ON|OFF` — prefer system packages (default **ON**) or force vendored.\r\n- `-DLLDBG_WARN_AS_ERRORS=ON|OFF` — treat warnings as errors (default **OFF** here).\r\n\r\n### Run\r\n\r\nLaunch the UI directly:\r\n```bash\r\n./build/user-release/lldbgui\r\n```\r\n\r\nA few useful CLI options (subset):\r\n- `-f, --file \u003cprog\u003e` — debug this program\r\n- `-p, --attach-pid \u003cpid\u003e` — attach to PID\r\n- `-n, --attach-name \u003cname\u003e` — attach to process by name\r\n- `--workdir \u003cdir\u003e` — set initial file browser root\r\n- `--loglevel \u003cdebug|verbose|info|warning|error\u003e`\r\n\r\nExample:\r\n```bash\r\n./build/user-release/lldbgui --file ./a.out --loglevel info\r\n```\r\n\r\n---\r\n\r\n## 3) Developers — Debug‑friendly build (`dev`)\r\n\r\nGenerates **RelWithDebInfo** binaries and writes `compile_commands.json` for IDEs/linters.\r\n\r\n```bash\r\ncmake --preset dev\r\n# alternative: symlink compile_commands.json to root repo directory for editors\r\n# cmake --preset dev -DCMAKE_EXPOSE_COMPILE_COMMANDS=ON\r\ncmake --build --preset dev -j\r\n```\r\n\r\nArtifacts:\r\n- Binary: `build/dev/lldbgui`\r\n- Compilation DB: `build/dev/compile_commands.json`\r\n\r\n### Editor \u0026 tooling hints\r\n\r\n- **clangd/VSCode/CLion**: point to `build/dev/compile_commands.json`.\r\n- **clang-tidy / clang-format**: versions pinned in repo (see `.clang-tidy`, `.clang-format`):\r\n  ```bash\r\n  # Example: run clang-tidy on sources using the dev build directory\r\n  clang-tidy -p build/dev --config-file=.clang-tidy $(git ls-files 'src' | grep -E '\\.(c|cc|cpp|cxx|m|mm)$')\r\n  ```\r\n\r\n### Running tests\r\n\r\nIf/when tests are added, you can use the CTest preset:\r\n```bash\r\nctest --preset dev --output-on-failure\r\n```\r\n\r\n---\r\n\r\n## 4) Common customizations\r\n\r\n- Select a specific compiler:\r\n  ```bash\r\n  # Clang\r\n  CC=clang CXX=clang++ cmake --preset dev\r\n  # GCC\r\n  CC=gcc   CXX=g++     cmake --preset dev\r\n  ```\r\n- Clean the build:\r\n  ```bash\r\n  cmake --build --preset dev --target clean\r\n  # or blow away the tree:\r\n  rm -rf build/dev\r\n  ```\r\n- Change build type ad‑hoc (developers):\r\n  ```bash\r\n  cmake -S . -B build/dev -G Ninja -DCMAKE_BUILD_TYPE=Debug\r\n  ```\r\n\r\n---\r\n\r\n## 5) Troubleshooting\r\n\r\n- **LLDB not found**\r\n  - macOS: ensure Xcode CLTs are installed; if using Homebrew LLVM, export `CMAKE_PREFIX_PATH`, `LLVM_DIR`, `LLDB_DIR` as above.\r\n  - Linux: install `lldb` + headers (`liblldb-dev` / `lldb-devel`) from your distro.\r\n\r\n- **OpenGL/GLFW errors**\r\n  - Install OpenGL dev headers (`libgl1-mesa-dev` on Debian/Ubuntu; `mesa-libGL-devel` on Fedora).\r\n  - GLFW will be fetched automatically if not present, but it still requires platform GL/X11 headers on Linux.\r\n\r\n- **Non‑Apple Clang on macOS**\r\n  - By default the build prefers AppleClang. To force a different toolchain:\r\n    ```bash\r\n    cmake -S . -B build/dev -G Ninja -DLLDBG_ALLOW_NON_APPLECLANG=ON\r\n    ```\r\n\r\n- **Ninja not found**\r\n  - Install it via your package manager (see prerequisites) or run `brew install ninja`.\r\n\r\n---\r\n\r\n## 6) What the presets do\r\n\r\n- **`user-release`**\r\n  `CMAKE_BUILD_TYPE=Release`, **LTO enabled**, warnings not-as-errors.\r\n- **`dev`**\r\n  `CMAKE_BUILD_TYPE=RelWithDebInfo`, exports `compile_commands.json`, warnings as-errors.\r\n\r\n(See `CMakePresets.json` for exact values.)\r\n\r\n---\r\n\r\nHappy hacking! If you hit build issues on a new distro, paste the full CMake output and we’ll sort it out.\r\n\r\n## Developers\r\n\r\nsee [Contributing](./docs/CONTRIBUTING.md)\r\n\r\n## Changelog\r\n\r\nsee [Changelog](./docs/CHANGELOG.md)\r\n","funding_links":[],"categories":["C++","C++ (225)"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzmeadows%2Flldbg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzmeadows%2Flldbg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzmeadows%2Flldbg/lists"}