The LLDB Debugger

LLDB to GDB Command Map

Below is a table of LLDB commands with the GDB counterparts. The built in GDB compatability aliases in GDB are also listed.

Execution Commands

LLDB GDB
Launch a process no arguments.
(lldb) process launch
(lldb) run
(lldb) r
(gdb) run
(gdb) r
Launch a process with arguments <args>.
(lldb) process launch -- <args>
(lldb) run -- <args>
(lldb) r <args>
(gdb) run <args>
(gdb) r <args>
Launch a process for with arguments a.out 1 2 3 without having to supply the args every time.
% lldb a.out 1 2 3
(lldb) run
...
(lldb) run
...
% gdb --args a.out 1 2 3
(gdb) run
...
(gdb) run
...
Launch a process with arguments in new terminal window (Mac OS X only).
(lldb) process launch --tty -- <args>
(lldb) process launch -t -- <args>
Launch a process with arguments in existing terminal /dev/ttys006 (Mac OS X only).
(lldb) process launch --tty=/dev/ttys006 -- <args>
(lldb) process launch -t/dev/ttys006 -- <args>
Attach to a process with process ID 123.
(lldb) process attach --pid 123
(lldb) attach -p 123
(gdb) attach 123
Attach to a process named "a.out".
(lldb) process attach --name a.out
(lldb) process attach -n a.out
(gdb) attach a.out
Wait for a process named "a.out" to launch and attach.
(lldb) process attach --name a.out --waitfor
(lldb) process attach -n a.out -w
(gdb) attach -waitfor a.out
Do a source level single step in the currently selected thread.
(lldb) thread step-in
(lldb) step
(lldb) s
(gdb) step
(gdb) s
Do a source level single step over in the currently selected thread.
(lldb) thread step-over
(lldb) next
(lldb) n
(gdb) next
(gdb) n
Do an instruction level single step in the currently selected thread.
(lldb) thread step-inst
(lldb) si
(gdb) stepi
(gdb) si
Do an instruction level single step over in the currently selected thread.
(lldb) thread step-inst-over
(gdb) nexti
(gdb) ni
Step out of the currently selected frame.
(lldb) thread step-out
(lldb) finish
(gdb) finish

Breakpoint Commands

LLDB GDB
Set a breakpoint at all functions named main.
(lldb) breakpoint set --name main
(lldb) breakpoint set -n main
(lldb) b main
(lldb) break main
Set a breakpoint in file test.c at line 12.
(lldb) breakpoint set --file test.c --line 12
(lldb) breakpoint set -f test.c -l 12
(lldb) b test.c:12
(lldb) break test.c:12
Set a breakpoint at all C++ methods whose basename is main.
(lldb) breakpoint set --method main
(lldb) breakpoint set -M main
(lldb) break main
(Hope that there are no C funtions named main).
Set a breakpoint at all Objective C methods whose selector is count.
(lldb) breakpoint set --selector count
(lldb) breakpoint set -S count
(lldb) break count
(Hope that there are no C or C++ funtions named count).

Examining Thread State

LLDB GDB
Show the arguments and local variables for the current frame.
(lldb) frame variable
(gdb) info args
and
(gdb) info locals
Show the stack backtrace for the current thread.
(lldb) thread backtrace
(lldb) bt
(gdb) bt
Show the stack backtraces for all threads.
(lldb) thread backtrace all
(lldb) bt all
(gdb) thread apply all bt
Show all thread registers.
(lldb) register read (gdb) info all-registers
Show the values for the thread registers name "rax", "rsp" and "rbp".
(lldb) register read rax rsp rbp (gdb) info all-registers rax rsp rbp
Read memory from address 0xbffff3c0 and show 4 hex uint32_t values.
(lldb) memory read --size 4 --format x --count 4 0xbffff3c0
(lldb) memory read -s4 -fx -c4 0xbffff3c0
(lldb) x -s4 -fx -c4 0xbffff3c0
(gdb) x/4xw 0xbffff3c0
Read 512 bytes of memory from address 0xbffff3c0 and save results to a local file as text.
(lldb) memory read --outfile /tmp/mem.txt --count 512 0xbffff3c0
(lldb) memory read -o/tmp/mem.txt -c512 0xbffff3c0
(gdb) set logging on
(gdb) set logging file /tmp/mem.txt
(gdb) x/512bx 0xbffff3c0
(gdb) set logging off
Save binary memory data starting at 0x1000 and ending at 0x2000 to a file.
(lldb) memory read --outfile /tmp/mem.bin --binary 0x1000 0x1200
(lldb) memory read -o /tmp/mem.bin -b 0x1000 0x1200
Disassemble the current function for the current frame.
(lldb) disassemble --frame
(lldb) disassemble -f
(gdb) disassemble
Disassemble any functions named main.
(lldb) disassemble --name main
(lldb) disassemble -n main
(gdb) disassemble main
Disassemble an address range.
(lldb) disassemble --start-address 0x1eb8 --end-address 0x1ec3
(lldb) disassemble -s 0x1eb8 -e 0x1ec3
(gdb) disassemble 0x1eb8 0x1ec3
Disassemble 20 instructions from a given address.
(lldb) disassemble --start-address 0x1eb8 --count 20
(lldb) disassemble -s 0x1eb8 -c 20
(gdb) x/20i 0x1eb8
Show mixed source and disassembly for the current function for the current frame.
(lldb) disassemble --frame --mixed
(lldb) disassemble -f -m
n/a
Disassemble the current function for the current frame and show the opcode bytes.
(lldb) disassemble --frame --bytes
(lldb) disassemble -f -b
n/a
Disassemble the current source line for the current frame.
(lldb) disassemble --line
(lldb) disassemble -l
n/a

Executable and Shared Library Query Commands

LLDB GDB
List the main executable and all dependent shared libraries.
(lldb) image list
(gdb) info shared
Lookup information for a raw address in the executable or any shared libraries.
(lldb) image lookup --address 0x1ec4
(lldb) image lookup -a 0x1ec4
(gdb) info symbol 0x1ec4
Lookup information for an address in a.out only.
(lldb) image lookup --address 0x1ec4 a.out
(lldb) image lookup -a 0x1ec4 a.out
Lookup information for for a type Point by name.
(lldb) image lookup --type Point
(lldb) image lookup -t Point
(lldb) ptype Point
Dump all sections from the main executable and any shared libraries.
(lldb) image dump sections
(gdb) maintenance info sections
Dump all sections in the a.out module.
(lldb) image dump sections a.out
Dump all symbols from the main executable and any shared libraries.
(lldb) image dump symtab
Dump all symbols in a.out and liba.so.
(lldb) image dump symtab a.out liba.so