An enumeration for the various styles of cells. typedefenum { UITableViewCellStyleDefault, UITableViewCellStyleValue1, UITableViewCellStyleValue2, UITableViewCellStyleSubtitle } UITableViewCellStyle;
Below is a table of GDB commands with the LLDB counterparts. The built in GDB-compatibility aliases in LLDB are also listed. The full lldb command names are often long, but any unique short form can be used. Instead of “breakpoint set“, “br se“ is also acceptable.
Set a watchpoint on a variable when it is written to.
(gdb) watch global_var
(lldb) watchpoint set variable global_var (lldb) wa s v global_var
Set a watchpoint on a memory location when it is written into. The size of the region to watch for defaults to the pointer size if no ‘-x byte_size’ is specified. This command takes raw input, evaluated as an expression returning an unsigned integer pointing to the start of the region, after the ‘–’ option terminator.
(gdb) watch -location g_char_ptr
(lldb) watchpoint set expression – my_ptr (lldb) wa s e – my_ptr
Set a condition on a watchpoint.
(lldb) watch set var global (lldb) watchpoint modify -c ‘(global==5)’ (lldb) c … (lldb) bt * thread #1: tid = 0x1c03, 0x0000000100000ef5 a.outmodify + 21 at main.cpp:16, stop reason = watchpoint 1 frame #0: 0x0000000100000ef5 a.outmodify + 21 at main.cpp:16 frame #1: 0x0000000100000eac a.outmain + 108 at main.cpp:25 frame #2: 0x00007fff8ac9c7e1 libdyld.dylibstart + 1 (lldb) frame var global (int32_t) global = 5
Evaluating a generalized expression in the current frame.
(gdb) print (int) printf (“Print nine: %d.”, 4 + 5) or if you don’t want to see void returns: (gdb) call (int) printf (“Print nine: %d.”, 4 + 5)
(lldb) expr (int) printf (“Print nine: %d.”, 4 + 5) or using the print alias: (lldb) print (int) printf (“Print nine: %d.”, 4 + 5)
Creating and assigning a value to a convenience variable.
(gdb) set $foo = 5 (gdb) set variable $foo = 5 or using the print command (gdb) print $foo = 5 or using the call command (gdb) call $foo = 5 and if you want to specify the type of the variable: (gdb) set $foo = (unsigned int) 5
In lldb you evaluate a variable declaration expression as you would write it in C: (lldb) expr unsigned int $foo = 5
Printing the ObjC “description” of an object.
(gdb) po [SomeClass returnAnObject]
(lldb) expr -o – [SomeClass returnAnObject] or using the po alias: (lldb) po [SomeClass returnAnObject]
Print the dynamic type of the result of an expression.
(gdb) set print object 1 (gdb) p someCPPObjectPtrOrReference only works for C++ objects.
(lldb) expr -d 1 – [SomeClass returnAnObject] (lldb) expr -d 1 – someCPPObjectPtrOrReference or set dynamic type printing to be the default: (lldb) settings set target.prefer-dynamic run-target
Calling a function so you can stop at a breakpoint in the function.
(gdb) set unwindonsignal 0 (gdb) p function_with_a_breakpoint()
(lldb) expr -i 0 – function_with_a_breakpoint()
Calling a function that crashes, and stopping when the function crashes.
(gdb) set unwindonsignal 0 (gdb) p function_which_crashes()
Backtrace the first five frames of the current thread.
(gdb) bt 5
(lldb) thread backtrace -c 5 (lldb) bt 5 (lldb-169 and later) (lldb) bt -c 5 (lldb-168 and earlier)
Select a different stack frame by index for the current thread.
(gdb) frame 12
(lldb) frame select 12 (lldb) fr s 12 (lldb) f 12
List information about the currently selected frame in the current thread.
(lldb) frame info
Select the stack frame that called the current stack frame.
(gdb) up
(lldb) up (lldb) frame select –relative=1
Select the stack frame that is called by the current stack frame.
(gdb) down
(lldb) down (lldb) frame select –relative=-1 (lldb) fr s -r-1
Select a different stack frame using a relative offset.
(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
Show the general purpose registers for the current thread.
(gdb) info registers
(lldb) register read
Write a new decimal value ‘123’ to the current thread register ‘rax’.
(gdb) p $rax = 123
(lldb) register write rax 123
Skip 8 bytes ahead of the current program counter (instruction pointer). Note that we use backticks to evaluate an expression and insert the scalar result in LLDB.
(gdb) jump *$pc+8
(lldb) register write pc $pc+8
Show the general purpose registers for the current thread formatted as signed decimal. LLDB tries to use the same format characters as printf(3) when possible. Type “help format” to see the full list of format specifiers.
(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
Show all registers in all register sets for the current thread.
(gdb) info all-registers
(lldb) register read –all (lldb) re r -a
Show the values for the registers named “rax”, “rsp” and “rbp” in the current thread.
(gdb) info all-registers rax rsp rbp
(lldb) register read rax rsp rbp
Show the values for the register named “rax” in the current thread formatted as binary.
(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
Read memory from address 0xbffff3c0 and show 4 hex uint32_t values.
(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
Read memory starting at the expression “argv[0]”.
(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]
Read 512 bytes of memory from address 0xbffff3c0 and save results to a local file as text.
(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
Save binary memory data starting at 0x1000 and ending at 0x2000 to a file.
(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
Get information about a specific heap allocation (available on Mac OS X only).
List the main executable and all dependent shared libraries.
(gdb) info shared
(lldb) image list
Look up information for a raw address in the executable or any shared libraries.
(gdb) info symbol 0x1ec4
(lldb) image lookup –address 0x1ec4 (lldb) im loo -a 0x1ec4
Look up functions matching a regular expression in a binary.
(gdb) info function <FUNC_REGEX>
This one finds debug symbols: (lldb) image lookup -r -n <FUNC_REGEX> This one finds non-debug symbols: (lldb) image lookup -r -s <FUNC_REGEX> Provide a list of binaries as arguments to limit the search.
Find full souce line information.
(gdb) info line 0x1ec4
This one is a bit messy at present. Do: (lldb) image lookup -v –address 0x1ec4 and look for the LineEntry line, which will have the full source path and line range information.
Look up functions matching a regular expression in a binary.
(gdb) info function <FUNC_REGEX>
This one finds debug symbols: (lldb) image lookup -r -n <FUNC_REGEX> This one finds non-debug symbols: (lldb) image lookup -r -s <FUNC_REGEX> Provide a list of binaries as arguments to limit the search.
Look up information for an address in a.out only.
(lldb) image lookup –address 0x1ec4 a.out (lldb) im loo -a 0x1ec4 a.out
Look up information for for a typePointby name.
(gdb) ptype Point
(lldb) image lookup –type Point (lldb) im loo -t Point
Dump all sections from the main executable and any shared libraries.
(gdb) maintenance info sections
(lldb) image dump 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.
Remap source file pathnames for the debug session. If your source files are no longer located in the same location as when the program was built — maybe the program was built on a different computer — you need to tell the debugger how to find the sources at their local file path instead of the build system’s file path.
(gdb) set pathname-substitutions /buildbot/path /my/path
(lldb) settings set target.source-map /buildbot/path /my/path
Supply a catchall directory to search for source files in.