文章出处,原创于 https://HawkingOuYang.github.io/
LLDB 介绍
WHAT IS LLDB? → http://lldb.llvm.org/
LLDB is a next generation, high-performance debugger. It is built as a set of reusable components which highly leverage existing libraries in the larger LLVM Project, such as the Clang expression parser and LLVM disassembler.
LLDB is the default debugger in Xcode on Mac OS X and supports debugging C, Objective-C and C++ on the desktop and iOS devices and simulator.
All of the code in the LLDB project is available under the standard LLVM License, an open source “BSD-style” license.
与调试器共舞 - LLDB 的华尔兹 → https://objccn.io/issue-19-2/
熟练使用 LLDB,让你调试事半功倍 → http://ios.jobbole.com/83393/
LLDB 使用
(lldb) help
Debugger commands:
apropos -- List debugger commands related to a word or subject.
breakpoint -- Commands for operating on breakpoints (see 'help b' for
shorthand.)
bugreport -- Commands for creating domain-specific bug reports.
command -- Commands for managing custom LLDB commands.
disassemble -- Disassemble specified instructions in the current
target. Defaults to the current function for the
current thread and stack frame.
expression -- Evaluate an expression on the current thread. Displays
any returned value with LLDB's default formatting.
frame -- Commands for selecting and examing the current thread's
stack frames.
gdb-remote -- Connect to a process via remote GDB server. If no host
is specifed, localhost is assumed.
gui -- Switch into the curses based GUI mode.
help -- Show a list of all debugger commands, or give details
about a specific command.
kdp-remote -- Connect to a process via remote KDP server. If no UDP
port is specified, port 41139 is assumed.
language -- Commands specific to a source language.
log -- Commands controlling LLDB internal logging.
memory -- Commands for operating on memory in the current target
process.
platform -- Commands to manage and create platforms.
plugin -- Commands for managing LLDB plugins.
process -- Commands for interacting with processes on the current
platform.
quit -- Quit the LLDB debugger.
register -- Commands to access registers for the current thread and
stack frame.
script -- Invoke the script interpreter with provided code and
display any results. Start the interactive interpreter
if no code is supplied.
settings -- Commands for managing LLDB settings.
source -- Commands for examining source code described by debug
information for the current target process.
target -- Commands for operating on debugger targets.
thread -- Commands for operating on one or more threads in the
current process.
type -- Commands for operating on the type system.
version -- Show the LLDB debugger version.
watchpoint -- Commands for operating on watchpoints.
Current command abbreviations (type 'help command alias' for more info):
add-dsym -- ('target symbols add') Add a debug symbol file to one of the
target's current modules by specifying a path to a debug symbols
file, or using the options to specify a module to download
symbols for.
attach -- ('_regexp-attach') Attach to process by ID or name.
b -- ('_regexp-break') Set a breakpoint using one of several
shorthand formats.
bt -- ('_regexp-bt') Show the current thread's call stack. Any
numeric argument displays at most that many frames. The
argument 'all' displays all threads.
c -- ('process continue') Continue execution of all threads in the
current process.
call -- ('expression --') Evaluate an expression on the current thread.
Displays any returned value with LLDB's default formatting.
continue -- ('process continue') Continue execution of all threads in the
current process.
detach -- ('process detach') Detach from the current target process.
di -- ('disassemble') Disassemble specified instructions in the
current target. Defaults to the current function for the
current thread and stack frame.
dis -- ('disassemble') Disassemble specified instructions in the
current target. Defaults to the current function for the
current thread and stack frame.
display -- ('_regexp-display') Evaluate an expression at every stop (see
'help target stop-hook'.)
down -- ('_regexp-down') Select a newer stack frame. Defaults to
moving one frame, a numeric argument can specify an arbitrary
number.
env -- ('_regexp-env') Shorthand for viewing and setting environment
variables.
exit -- ('quit') Quit the LLDB debugger.
f -- ('frame select') Select the current stack frame by index from
within the current thread (see 'thread backtrace'.)
file -- ('target create') Create a target using the argument as the
main executable.
finish -- ('thread step-out') Finish executing the current stack frame
and stop after returning. Defaults to current thread unless
specified.
image -- ('target modules') Commands for accessing information for one
or more target modules.
j -- ('_regexp-jump') Set the program counter to a new address.
jump -- ('_regexp-jump') Set the program counter to a new address.
kill -- ('process kill') Terminate the current target process.
l -- ('_regexp-list') List relevant source code using one of several
shorthand formats.
list -- ('_regexp-list') List relevant source code using one of several
shorthand formats.
n -- ('thread step-over') Source level single step, stepping over
calls. Defaults to current thread unless specified.
next -- ('thread step-over') Source level single step, stepping over
calls. Defaults to current thread unless specified.
nexti -- ('thread step-inst-over') Instruction level single step,
stepping over calls. Defaults to current thread unless
specified.
ni -- ('thread step-inst-over') Instruction level single step,
stepping over calls. Defaults to current thread unless
specified.
p -- ('expression --') Evaluate an expression on the current thread.
Displays any returned value with LLDB's default formatting.
parray -- ('expression -Z %1 --') Evaluate an expression on the current
thread. Displays any returned value with LLDB's default
formatting.
po -- Evaluate an expression on the current thread. Displays any
returned value with formatting controlled by the type's author.
poarray -- ('expression -O -Z %1 --') Evaluate an expression on the
current thread. Displays any returned value with LLDB's default
formatting.
print -- ('expression --') Evaluate an expression on the current thread.
Displays any returned value with LLDB's default formatting.
q -- ('quit') Quit the LLDB debugger.
r -- ('process launch -X true --') Launch the executable in the
debugger.
rbreak -- ('breakpoint set -r %1') Sets a breakpoint or set of
breakpoints in the executable.
repl -- ('expression -r -- ') Evaluate an expression on the current
thread. Displays any returned value with LLDB's default
formatting.
run -- ('process launch -X true --') Launch the executable in the
debugger.
s -- ('thread step-in') Source level single step, stepping into
calls. Defaults to current thread unless specified.
si -- ('thread step-inst') Instruction level single step, stepping
into calls. Defaults to current thread unless specified.
sif -- Step through the current block, stopping if you step directly
into a function whose name matches the TargetFunctionName.
step -- ('thread step-in') Source level single step, stepping into
calls. Defaults to current thread unless specified.
stepi -- ('thread step-inst') Instruction level single step, stepping
into calls. Defaults to current thread unless specified.
t -- ('thread select') Change the currently selected thread.
tbreak -- ('_regexp-tbreak') Set a one-shot breakpoint using one of
several shorthand formats.
undisplay -- ('_regexp-undisplay') Stop displaying expression at every stop
(specified by stop-hook index.)
up -- ('_regexp-up') Select an older stack frame. Defaults to moving
one frame, a numeric argument can specify an arbitrary number.
x -- ('memory read') Read from the memory of the current target
process.
For more information on any command, type 'help <command-name>'.
(lldb)