Lldb

mohitmishra786/low-level-dev-skills/skills/debuggers/lldb

by mohitmishra786bdc58472fa9fNo license253 starsListed Oct 9, 2026Updated Oct 9, 2026Repository updated 3 months ago

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.

Instructions onlySoftware Development
AI-generated overview

Guides LLDB debugging sessions and maps GDB commands to LLDB for C, C++, Swift and Objective-C programs.

What it does
This skill provides instructions for running LLDB debugger sessions, including starting LLDB, setting breakpoints and watchpoints, inspecting variables, memory and registers, and managing threads. It includes a GDB-to-LLDB command mapping table, Apple/macOS specifics such as Objective-C object printing and image lookup, VS Code CodeLLDB launch configuration, and LLDB Python scripting examples. It also points to a reference file with a fuller GDB-LLDB command map.
When to use it
Use it when debugging C, C++, Swift or Objective-C programs with LLDB, especially on macOS, FreeBSD or clang-based Linux setups. It is also meant for translating existing GDB knowledge into LLDB commands, debugging Apple platform code, or setting up LLDB in Xcode or VS Code.
Requirements
No scripts are shipped; it is instructions only. Using the described workflows requires the LLDB debugger and a compiled binary with debug info, and the VS Code section assumes the CodeLLDB extension.

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

bash
lldb ./prog                         # load binarylldb ./prog -- arg1 arg2            # with argumentslldb -p 12345                       # attach to PIDlldb -c core.1234                   # load core dumplldb ./prog core.1234               # binary + core

2. GDB → LLDB command map

Source: https://lldb.llvm.org/use/map.html

GDBLLDBNotes
run [args]process launch [args] / r
continueprocess continue / c
nextthread step-over / n
stepthread step-in / s
nextithread step-inst-over / ni
stepithread step-inst / si
finishthread step-out / finish
break mainbreakpoint set -n main / b main
break file.c:42breakpoint set -f file.c -l 42 / b file.c:42
break *0x400abcbreakpoint set -a 0x400abc / b -a 0x400abc
watch xwatchpoint set variable x / wa s v x
print xframe variable x / p x
print/x xp/x x
info localsframe variable / fr v
info argsframe variable --arguments
backtracethread backtrace / bt
frame Nframe select N / f N
info threadsthread list
thread Nthread select N
thread apply all btthread backtrace all
x/10wx addrmemory read -s4 -fx -c10 addr / x/10xw addr
set var = 42expression var = 42 / expr var = 42
quitquit / q

3. Breakpoints

lldb
# By nameb mainbreakpoint set --name foobreakpoint set --name foo --condition 'x > 0'
# By file:lineb file.c:42breakpoint set --file file.c --line 42
# By addressb -a 0x100003f20
# By regexbreakpoint set --func-regex '^MyClass::'
# Listbreakpoint list / br l
# Deletebreakpoint delete 2
# Disable/enablebreakpoint disable 1breakpoint enable 1
# Commands on hitbreakpoint command add 1  > p x  > continue  > DONE

4. Inspect state

lldb
# Print variablep xframe variable xp *ptrp arr[0]
# Print expressionexpression x * 2 + 1expr (int)sqrt(9.0)
# All localsframe variablefr v -a          # include arguments
# Registersregister readregister read rip rsp
# Memorymemory read --size 4 --format x --count 10 0x7fff0000x/10xw 0x7fff0000          # GDB-compatible syntax
# Type infoimage lookup --type MyClasstype lookup MyClass

5. Watchpoints

lldb
watchpoint set variable x           # write watchpointwatchpoint set variable -w read x   # read watchpointwatchpoint set variable -w read_write xwatchpoint set expression -- &x     # by address
watchpoint listwatchpoint delete 1

6. Threads

lldb
thread listthread select 3thread backtrace allthread backtrace --count 5           # limit depth
# Per-thread steppingthread step-over                     # step this thread only

7. macOS / Apple specifics

lldb
# Symbol lookup in shared cacheimage lookup --address 0x18ab12345image lookup --name objc_msgSend
# Objective-C method breakpointb "-[NSArray objectAtIndex:]"b "+[NSString stringWithFormat:]"
# Inspect Objective-C objectpo myObject                          # print-object (calls -description)po [arr count]
# Show loaded librariesimage listimage list -b                        # brief (names only)

8. VS Code integration

Install the CodeLLDB extension. .vscode/launch.json:

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

python
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 [blocked].

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

Source and attribution

Source:mohitmishra786/low-level-dev-skillsinskills/debuggers/lldbat commitbdc5847

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal