GDB | LLDB |
|
(gdb) bt | (lldb) thread backtrace (lldb) bt |
|
(gdb) thread apply all bt | (lldb) thread backtrace all (lldb) bt all |
|
(gdb) bt 5 | (lldb) thread backtrace -c 5 (lldb) bt 5 (lldb-169 and later) (lldb) bt -c 5 (lldb-168 and earlier) |
|
(gdb) frame 12 | (lldb) frame select 12 (lldb) fr s 12 (lldb) f 12 |
|
| (lldb) frame info |
|
(gdb) up | (lldb) up (lldb) frame select --relative=1 |
|
(gdb) down | (lldb) down (lldb) frame select --relative=-1 (lldb) fr s -r-1 |
|
(gdb) up 2 (gdb) down 3 | (lldb) frame select --relative 2 (lldb) fr s -r2 (lldb) frame select --relative -3 (lldb) fr s -r-3 |
|
(gdb) info registers | (lldb) register read |
|
(gdb) p $rax = 123 | (lldb) register write rax 123 |
|
(gdb) jump *$pc+8 | (lldb) register write pc `$pc+8` |
|
| (lldb) register read --format i (lldb) re r -f i LLDB now supports the GDB shorthand format syntax but there can't be space after the command: (lldb) register read/d |
|
(gdb) info all-registers | (lldb) register read --all (lldb) re r -a |
|
(gdb) info all-registers rax rsp rbp | (lldb) register read rax rsp rbp |
|
(gdb) p/t $rax | (lldb) register read --format binary rax (lldb) re r -f b rax LLDB now supports the GDB shorthand format syntax but there can't be space after the command: (lldb) register read/t rax (lldb) p/t $rax |
|
(gdb) x/4xw 0xbffff3c0 | (lldb) memory read --size 4 --format x --count 4 0xbffff3c0 (lldb) me r -s4 -fx -c4 0xbffff3c0 (lldb) x -s4 -fx -c4 0xbffff3c0 LLDB now supports the GDB shorthand format syntax but there can't be space after the command: (lldb) memory read/4xw 0xbffff3c0 (lldb) x/4xw 0xbffff3c0 (lldb) memory read --gdb-format 4xw 0xbffff3c0 |
|
(gdb) x argv[0] | (lldb) memory read `argv[0]` NOTE: any command can inline a scalar expression result (as long as the target is stopped) using backticks around any expression: (lldb) memory read --size `sizeof(int)` `argv[0]` |
|
(gdb) set logging on (gdb) set logging file /tmp/mem.txt (gdb) x/512bx 0xbffff3c0 (gdb) set logging off | (lldb) memory read --outfile /tmp/mem.txt --count 512 0xbffff3c0 (lldb) me r -o/tmp/mem.txt -c512 0xbffff3c0 (lldb) x/512bx -o/tmp/mem.txt 0xbffff3c0 |
|
(gdb) dump memory /tmp/mem.bin 0x1000 0x2000 | (lldb) memory read --outfile /tmp/mem.bin --binary 0x1000 0x1200 (lldb) me r -o /tmp/mem.bin -b 0x1000 0x1200 |
|
(gdb) info malloc 0x10010d680 | (lldb) script import lldb.macosx.heap (lldb) process launch --environment MallocStackLogging=1 -- [ARGS] (lldb) malloc_info --stack-history 0x10010d680 |
|
| (lldb) script import lldb.macosx.heap (lldb) malloc_info --type 0x10010d680 |
|
| (lldb) script import lldb.macosx.heap (lldb) ptr_refs EXPR |
|
| (lldb) script import lldb.macosx.heap (lldb) cstr_refs CSTRING |
|
(gdb) disassemble | (lldb) disassemble --frame (lldb) di -f |
|
(gdb) disassemble main | (lldb) disassemble --name main (lldb) di -n main |
|
(gdb) disassemble 0x1eb8 0x1ec3 | (lldb) disassemble --start-address 0x1eb8 --end-address 0x1ec3 (lldb) di -s 0x1eb8 -e 0x1ec3 |
|
(gdb) x/20i 0x1eb8 | (lldb) disassemble --start-address 0x1eb8 --count 20 (lldb) di -s 0x1eb8 -c 20 |
|
n/a | (lldb) disassemble --frame --mixed (lldb) di -f -m |
|
n/a | (lldb) disassemble --frame --bytes (lldb) di -f -b |
|
n/a | (lldb) disassemble --line (lldb) di -l |