/lldb
LLDB debugger skill for C/C++/Swift/Objective-C programs. Use when debugging with LLDB on macOS, FreeBSD, or Linux-clang environments, mapping GDB mental models to LLDB commands, using LLDB in Xcode or VS Code, or debugging Swift/Objective-C. Activates on queries about LLDB
$ npx -y skills add mohitmishra786/low-level-dev-skills --skill lldb --agent claude-codeHow 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
/lldb
Context preview
The summary Claude sees to decide when to auto-load this skill.
LLDB debugger skill for C/C++/Swift/Objective-C programs. Use when debugging with LLDB on macOS, FreeBSD, or Linux-clang environments, mapping GDB mental models to LLDB commands, using LLDB in Xcode or VS Code, or debugging Swift/Objective-C. Activates on queries about LLDB
SKILL.md
lldb.SKILL.mdname: lldb
description: LLDB debugger skill for C/C++/Swift/Objective-C programs. Use when debugging with LLDB on macOS, FreeBSD, or Linux-clang environments, mapping GDB mental models to LLDB commands, using LLDB in Xcode or VS Code, or debugging Swift/Objective-C. Activates on queries about LLDB commands, GDB to LLDB migration, Apple platform debugging, LLDB Python scripting, or IDE-integrated debugging with clang-built binaries.
user-invocable: true
triggers:
- debug with LLDB
- GDB to LLDB migration
- LLDB commands
- debug Swift with LLDB
- LLDB in Xcode
- LLDB Python scripting
- Apple platform debugging LLDB
- LLDB VS Code integration
LLDB
Purpose
Guide agents through LLDB sessions and map existing GDB knowledge to LLDB. Covers command differences, Apple specifics, Python scripting, and IDE integration.
Triggers
- "I'm on macOS and need to debug a C++ program"
- "How does LLDB differ from GDB?"
- "How do I do [GDB command] in LLDB?"
- "LLDB shows `<unavailable>` for variables"
- "How do I use LLDB in VS Code?"
- "How do I write an LLDB Python script?"
Workflow
1. Start LLDB
lldb ./prog # load binary
lldb ./prog -- arg1 arg2 # with arguments
lldb -p 12345 # attach to PID
lldb -c core.1234 # load core dump
lldb ./prog core.1234 # binary + core
2. GDB → LLDB command map
Source: <https://lldb.llvm.org/use/map.html>
| GDB | LLDB | Notes | |-----|------|-------| | `run [args]` | `process launch [args]` / `r` | | | `continue` | `process continue` / `c` | | | `next` | `thread step-over` / `n` | | | `step` | `thread step-in` / `s` | | | `nexti` | `thread step-inst-over` / `ni` | | | `stepi` | `thread step-inst` / `si` | | | `finish` | `thread step-out` / `finish` | | | `break main` | `breakpoint set -n main` / `b main` | | | `break file.c:42` | `breakpoint set -f file.c -l 42` / `b file.c:42` | | | `break *0x400abc` | `breakpoint set -a 0x400abc` / `b -a 0x400abc` | | | `watch x` | `watchpoint set variable x` / `wa s v x` | | | `print x` | `frame variable x` / `p x` | | | `print/x x` | `p/x x` | | | `info locals` | `frame variable` / `fr v` | | | `info args` | `frame variable --arguments` | | | `backtrace` | `thread backtrace` / `bt` | | | `frame N` | `frame select N` / `f N` | | | `info threads` | `thread list` | | | `thread N` | `thread select N` | | | `thread apply all bt` | `thread backtrace all` | | | `x/10wx addr` | `memory read -s4 -fx -c10 addr` / `x/10xw addr` | | | `set var = 42` | `expression var = 42` / `expr var = 42` | | | `quit` | `quit` / `q` | |
3. Breakpoints
# By name
b main
breakpoint set --name foo
breakpoint set --name foo --condition 'x > 0'
# By file:line
b file.c:42
breakpoint set --file file.c --line 42
# By address
b -a 0x100003f20
# By regex
breakpoint set --func-regex '^MyClass::'
# List
breakpoint list / br l
# Delete
breakpoint delete 2
# Disable/enable
breakpoint disable 1
breakpoint enable 1
# Commands on hit
breakpoint command add 1
> p x
> continue
> DONE
4. Inspect state
# Print variable
p x
frame variable x
p *ptr
p arr[0]
# Print expression
expression x * 2 + 1
expr (int)sqrt(9.0)
# All locals
frame variable
fr v -a # include arguments
# Registers
register read
register read rip rsp
# Memory
memory read --size 4 --format x --count 10 0x7fff0000
x/10xw 0x7fff0000 # GDB-compatible syntax
# Type info
image lookup --type MyClass
type lookup MyClass
5. Watchpoints
watchpoint set variable x # write watchpoint
watchpoint set variable -w read x # read watchpoint
watchpoint set variable -w read_write x
watchpoint set expression -- &x # by address
watchpoint list
watchpoint delete 1
6. Threads
thread list
thread select 3
thread backtrace all
thread backtrace --count 5 # limit depth
# Per-thread stepping
thread step-over # step this thread only
7. macOS / Apple specifics
# Symbol lookup in shared cache
image lookup --address 0x18ab12345
image lookup --name objc_msgSend
# Objective-C method breakpoint
b "-[NSArray objectAtIndex:]"
b "+[NSString stringWithFormat:]"
# Inspect Objective-C object
po myObject # print-object (calls -description)
po [arr count]
# Show loaded libraries
image list
image list -b # brief (names only)
8. VS Code integration
Install the `CodeLLDB` extension. `.vscode/launch.json`:
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug (lldb)",
"type": "lldb",
"request": "launch",
"program": "${workspaceFolder}/build/prog",
"args": [],
"cwd": "${workspaceFolder}",
"preLaunchTask": "build"
}
]
}9. LLDB Python scripting
import lldb
def print_all_threads(debugger, command, result, internal_dict):
target = debugger.GetSelectedTarget()
process = target.GetProcess()
for thread in process:
print(f"Thread {thread.GetIndexID()}: {thread.GetName()}")
for frame in thread:
print(f" {frame}")
def __lldb_init_module(debugger, internal_dict):
debugger.HandleCommand('command script add -f myscript.print_all_threads pthreads')Load: `command script import /path/to/myscript.py`
For a full GDB↔LLDB command map, see [references/gdb-lldb-map.md](references/gdb-lldb-map.md).
Related skills
- Use `skills/debuggers/gdb` for GDB workflows
- Use `skills/debuggers/core-dumps` for core dump analysis
- Use `skills/compilers/clang` for building with debug info
Read more
name: lldb description: LLDB debugger skill for C/C++/Swift/Objective-C programs. Use when debugging with LLDB on macOS, FreeBSD, or Linux-clang environments, mapping GDB mental models to LLDB commands, using LLDB in Xcode or VS Code, or debugging Swift/Objective-C. Activates on queries about LLDB commands, GDB to LLDB migration, Apple platform debugging, LLDB Python scripting, or IDE-integrated debugging with clang-built binaries. user-invocable: true triggers: - debug with LLDB - GDB to LLDB migration - LLDB commands - debug Swift with LLDB - LLDB in Xcode - LLDB Python scripting - Apple platform debugging LLDB - LLDB VS Code integration
LLDB
Purpose
Guide agents through LLDB sessions and map existing GDB knowledge to LLDB. Covers command differences, Apple specifics, Python scripting, and IDE integration.
Triggers
- "I'm on macOS and need to debug a C++ program"
- "How does LLDB differ from GDB?"
- "How do I do [GDB command] in LLDB?"
- "LLDB shows `<unavailable>` for variables"
- "How do I use LLDB in VS Code?"
- "How do I write an LLDB Python script?"
Workflow
1. Start LLDB
lldb ./prog # load binary lldb ./prog -- arg1 arg2 # with arguments lldb -p 12345 # attach to PID lldb -c core.1234 # load core dump lldb ./prog core.1234 # binary + core
2. GDB → LLDB command map
Source: <https://lldb.llvm.org/use/map.html>
| GDB | LLDB | Notes | |-----|------|-------| | `run [args]` | `process launch [args]` / `r` | | | `continue` | `process continue` / `c` | | | `next` | `thread step-over` / `n` | | | `step` | `thread step-in` / `s` | | | `nexti` | `thread step-inst-over` / `ni` | | | `stepi` | `thread step-inst` / `si` | | | `finish` | `thread step-out` / `finish` | | | `break main` | `breakpoint set -n main` / `b main` | | | `break file.c:42` | `breakpoint set -f file.c -l 42` / `b file.c:42` | | | `break *0x400abc` | `breakpoint set -a 0x400abc` / `b -a 0x400abc` | | | `watch x` | `watchpoint set variable x` / `wa s v x` | | | `print x` | `frame variable x` / `p x` | | | `print/x x` | `p/x x` | | | `info locals` | `frame variable` / `fr v` | | | `info args` | `frame variable --arguments` | | | `backtrace` | `thread backtrace` / `bt` | | | `frame N` | `frame select N` / `f N` | | | `info threads` | `thread list` | | | `thread N` | `thread select N` | | | `thread apply all bt` | `thread backtrace all` | | | `x/10wx addr` | `memory read -s4 -fx -c10 addr` / `x/10xw addr` | | | `set var = 42` | `expression var = 42` / `expr var = 42` | | | `quit` | `quit` / `q` | |
3. Breakpoints
# By name b main breakpoint set --name foo breakpoint set --name foo --condition 'x > 0' # By file:line b file.c:42 breakpoint set --file file.c --line 42 # By address b -a 0x100003f20 # By regex breakpoint set --func-regex '^MyClass::' # List breakpoint list / br l # Delete breakpoint delete 2 # Disable/enable breakpoint disable 1 breakpoint enable 1 # Commands on hit breakpoint command add 1 > p x > continue > DONE
4. Inspect state
# Print variable p x frame variable x p *ptr p arr[0] # Print expression expression x * 2 + 1 expr (int)sqrt(9.0) # All locals frame variable fr v -a # include arguments # Registers register read register read rip rsp # Memory memory read --size 4 --format x --count 10 0x7fff0000 x/10xw 0x7fff0000 # GDB-compatible syntax # Type info image lookup --type MyClass type lookup MyClass
5. Watchpoints
watchpoint set variable x # write watchpoint watchpoint set variable -w read x # read watchpoint watchpoint set variable -w read_write x watchpoint set expression -- &x # by address watchpoint list watchpoint delete 1
6. Threads
thread list thread select 3 thread backtrace all thread backtrace --count 5 # limit depth # Per-thread stepping thread step-over # step this thread only
7. macOS / Apple specifics
# Symbol lookup in shared cache image lookup --address 0x18ab12345 image lookup --name objc_msgSend # Objective-C method breakpoint b "-[NSArray objectAtIndex:]" b "+[NSString stringWithFormat:]" # Inspect Objective-C object po myObject # print-object (calls -description) po [arr count] # Show loaded libraries image list image list -b # brief (names only)
8. VS Code integration
Install the `CodeLLDB` extension. `.vscode/launch.json`:
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug (lldb)",
"type": "lldb",
"request": "launch",
"program": "${workspaceFolder}/build/prog",
"args": [],
"cwd": "${workspaceFolder}",
"preLaunchTask": "build"
}
]
}9. LLDB Python scripting
import lldb
def print_all_threads(debugger, command, result, internal_dict):
target = debugger.GetSelectedTarget()
process = target.GetProcess()
for thread in process:
print(f"Thread {thread.GetIndexID()}: {thread.GetName()}")
for frame in thread:
print(f" {frame}")
def __lldb_init_module(debugger, internal_dict):
debugger.HandleCommand('command script add -f myscript.print_all_threads pthreads')Load: `command script import /path/to/myscript.py`
For a full GDB↔LLDB command map, see [references/gdb-lldb-map.md](references/gdb-lldb-map.md).
Related skills
- Use `skills/debuggers/gdb` for GDB workflows
- Use `skills/debuggers/core-dumps` for core dump analysis
- Use `skills/compilers/clang` for building with debug info
A curated suite of AI agent skills for systems and low-level programming — C/C++, Rust, Zig, GPU, bare-metal firmware, Linux kernel/driver development, computer architecture, compiler internals, HPC, and more.
Repo: mohitmishra786/low-level-dev-skills
Other skills on low-level-dev-skills.
- /custom-allocators
Custom allocator skill for memory allocation strategies. Use when implementing pool/slab/arena allocators, tuning jemalloc/mimalloc, writing Rust GlobalAlloc, or benchmarking allocator performance. Activates on queries about jemalloc, mimalloc, tcmalloc, arena allocator,
Open skill - /numa-programming
NUMA programming skill for multi-socket memory locality. Use when detecting NUMA topology, binding processes with numactl, using libnuma API, building NUMA-aware data structures, or measuring remote access penalties. Activates on queries about numactl, libnuma, NUMA topology,
Open skill - /af-xdp
AF_XDP skill for high-performance XDP sockets. Use when creating AF_XDP sockets, configuring UMEM and XSK rings, XDP_REDIRECT programs, copy vs zero-copy mode, or comparing with DPDK. Activates on queries about AF_XDP, xsk_umem, XDP_REDIRECT, libbpf xsk, or zero-copy XDP.
Open skill - /dpdk
DPDK skill for userspace packet I/O. Use when initializing EAL, configuring PMD drivers, using mbuf pools and rte_ring, setting up huge pages, RSS, or testpmd validation. Activates on queries about DPDK, EAL, rte_eth_rx_burst, hugepages, PMD, or testpmd.
Open skill - /io-uring
io_uring skill for Linux async I/O. Use when building high-performance servers with liburing, multi-shot operations, provided buffers, fixed files, zero-copy send, or tokio-uring. Activates on queries about io_uring, SQE/CQE, liburing, IORING_OP_PROVIDE_BUFFERS, or io_uring vs
Open skill - /adc-dac-baremetal
Bare-metal ADC and DAC skill. Use when configuring analog sampling, DMA-driven ADC, calibration, or DAC output on MCUs. Activates on queries about ADC bare-metal, sampling time, DMA ADC, or DAC channel setup.
Open skill

