Skip to content
Automation
Skill

/cli-anything-lldb

Stateful LLDB debugging via LLDB Python API

From plugin
cli-anything
47k72 skills5 commands
Install
$ npx -y skills add HKUDS/CLI-Anything --skill cli-anything-lldb --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/cli-anything-lldb

Context preview

The summary Claude sees to decide when to auto-load this skill.

Stateful LLDB debugging via LLDB Python API

SKILL.md

cli-anything-lldb.SKILL.md
name: "cli-anything-lldb"
description: Stateful LLDB debugging via LLDB Python API
version: 1.0.0
command: cli-anything-lldb
install: pip install cli-anything-lldb
requires:
  - lldb (Python bindings)
  - click>=8.0
  - prompt-toolkit>=3.0
categories:
  - debugging
  - native
  - lldb

LLDB CLI Skill

Use this CLI to run structured LLDB debugging workflows with JSON output.

Capabilities

  • Create debug target from executable path
  • Launch process or attach by pid/name
  • Manage breakpoints (set/list/delete/enable/disable)
  • Inspect threads, frames, locals, and backtrace
  • Evaluate expressions in current frame
  • Read/find process memory
  • Load core dumps
  • Interactive REPL with persistent session state
  • Formal stdio Debug Adapter Protocol server for AI/editor clients

Quick Commands

cli-anything-lldb --json target create --exe /path/to/exe
cli-anything-lldb --json process launch --arg foo --arg bar
cli-anything-lldb --json breakpoint set --function main
cli-anything-lldb --json breakpoint set --function PluginEntry --allow-pending
cli-anything-lldb --json process continue
cli-anything-lldb --json process interrupt
cli-anything-lldb --json thread backtrace --limit 20
cli-anything-lldb --json frame locals
cli-anything-lldb --json expr "myVar"
cli-anything-lldb --json memory read --address 0x1000 --size 64
cli-anything-lldb --json session close

Debug Adapter Protocol

Use the DAP entry point when an AI client needs a real debug adapter lifecycle instead of shelling out separate CLI commands:

cli-anything-lldb-dap
cli-anything-lldb-dap --profile /path/to/stop-rules.json

or:

cli-anything-lldb dap
cli-anything-lldb dap --profile /path/to/stop-rules.json

The DAP server speaks stdio `Content-Length` frames and must have exclusive stdout. Do not print logs to stdout around it. Supported requests include `initialize`, `launch`, `attach`, `configurationDone`, `setBreakpoints`, `setFunctionBreakpoints`, `threads`, `stackTrace`, `scopes`, `variables`, `setVariable`, `evaluate`, `continue`, `pause`, `next`, `stepIn`, `stepOut`, `source`, `loadedSources`, `readMemory`, `modules`, `exceptionInfo`, `disassemble`, and `disconnect`.

DAP variables can expose child references for structs/classes/arrays. Use `setVariable` only while stopped; LLDB may reject writes to optimized-out or read-only values.

For long-running GUI debuggees, DAP `continue` is non-blocking from the client's point of view: the adapter sends the response and `continued` event first, then waits for LLDB on a background thread. DAP `pause` uses LLDB async interrupt. If an agent needs to change breakpoints while the debuggee is running, the adapter interrupts first and waits for a stopped state before mutating LLDB breakpoints; if the target does not stop in time, retry after an explicit `pause`/`stopped` cycle.

For GUI apps that stop on debugger-internal startup or shader-JIT breakpoints, `launch` and `attach` accept the non-standard boolean argument `autoContinueInternalBreakpoints`. Enable it only when those internal stops are noise for the task; the adapter emits an `output` event before auto-continuing. For target-specific noise, prefer structured stop rules through inline `stopRules` or an external `stopRuleProfile`/`--profile` JSON file. Rules can match by `reason`, `module`, `function`, and/or `regex`, then either `stop` with clear `cliAnythingStop.origin` metadata or `continue` automatically. Use profiles for apps such as C4D so their NVIDIA shader-JIT/startup traps live outside the generic adapter.

DAP `stopped` events include `body.cliAnythingStop.origin`: `manualPause` for a client pause request, `internalTrap` for a matched internal rule, and `debuggee` for ordinary program stops. Existing `cli-anything-lldb-dap` processes do not hot-load new code or profile contents; restart the adapter and re-attach or re-launch before expecting new rules to apply.

Command Groups

target

cli-anything-lldb --json target create --exe /path/to/exe [--arch x86_64]
cli-anything-lldb --json target info

process

cli-anything-lldb --json process launch [--arg ARG ...] [--env KEY=VALUE ...] [--cwd DIR] [--stop-at-entry]
cli-anything-lldb --json process attach --pid 1234
cli-anything-lldb --json process attach --name myapp --wait-for
cli-anything-lldb --json process continue
cli-anything-lldb --json process interrupt
cli-anything-lldb --json process detach
cli-anything-lldb --json process info

breakpoint

cli-anything-lldb --json breakpoint set --function main
cli-anything-lldb --json breakpoint set --file main.c --line 42 --condition "i > 10"
cli-anything-lldb --json breakpoint set --function LateLoadedSymbol --allow-pending
cli-anything-lldb --json breakpoint list
cli-anything-lldb --json breakpoint delete --id 1
cli-anything-lldb --json breakpoint enable --id 1
cli-anything-lldb --json breakpoint disable --id 1

thread / frame / step

cli-anything-lldb --json thread list
cli-anything-lldb --json thread select --id 11111
cli-anything-lldb --json thread backtrace --limit 50
cli-anything-lldb --json frame select --index 0
cli-anything-lldb --json frame info
cli-anything-lldb --json frame locals
cli-anything-lldb --json step over
cli-anything-lldb --json step into
cli-anything-lldb --json step out

expr / memory / core

cli-anything-lldb --json expr "argc"
cli-anything-lldb --json memory read --address 0x1000 --size 128
cli-anything-lldb --json memory find "needle" --start 0x1000 --size 4096
cli-anything-lldb --json core load --path /path/to/core

Agent Usage Notes

  • Prefer `--json` for all automated flows.
  • Separate non-REPL invocations share a persistent session daemon by default.
  • Use `--session-file PATH` or `CLI_ANYTHING_LLDB_SESSION_FILE` to pin an explicit session for a task.
  • Run `cli-anything-lldb --json session close` when finished so attached processes detach and launched debuggees are clean
Read more
Ships withcli-anything

"CLI-Anything: Making ALL Software Agent-Native" -- CLI-Hub: https://clianything.cc/

Get the whole plugin