连接远程IOS:
process connect connect://ios-ip:debugerserver-port
显示IOS应用执行的基地址+文件路径
image list -o -f "PandaDelivery"
断点,基地址+偏移地址=实际的内存地址:
br s -a 0x0000000000198000+0x十六位偏移地址 //等于breakpoint set -a
设置函数断点:
br s -n "[PDLoginVModel .cxx_destruct]"
查看断点列表:
br l //等于breakpoint list
启用/禁用/del断点:
br en/dis/del 断点编号 //例如br en 1,启用1编号的断点。br dis 2,禁用2编号的断点。br del 3,删除3编号的断点。
查看寄存器:
register read
输出通用寄存器的数值:
po $寄存器名称 //例如:po $x0
如果使用IDApython打印寄存器的数值,使用:
GetRegValue("x0") //修改则是SetRegValue( long Value,"x0")
LLDB修改寄存器值:
register write 寄存器名称 值 //例如 register write x0 1223
更多帮助信息,使用help查看全部命令:
调试器命令:
apropos--------列出与单词或主题相关的调试器命令。
breakpoint-----用于在断点上操作的命令(请参阅“帮助b”以了解缩写。)
command--------用于管理自定义LLDB命令的命令。
disassemble----反汇编当前目标中的指定指令。默认为当前线程和堆栈帧的当前函数。
expression-----计算当前线程上的表达式。使用LLDB的默认格式显示任何返回值。
frame----------用于选择和检查当前线程堆栈帧的命令。
gdb-remote-----通过远程gdb服务器连接到进程。如果未指定主机,则假定为localhost。
gui------------切换到基于curses(在Linux/Unix下广泛应用的图形函数库)的gui(界面)模式。
help-----------显示所有调试器命令的列表,或提供有关特定命令的详细信息。
kdp-remote-----通过远程kdp服务器连接到进程。如果未指定UDP端口,则缺省端口41139。
language-------指定app用的开发语言。
log------------控制LLDB内部日志记录的命令。
memory---------用于在当前目标进程中操作内存的命令。
platform-------用于管理和执行当前电脑命令。例如:platform shell ls,显示电脑上的文件目录
plugin---------用于管理LLDB插件的命令。
process--------用于与当前平台上的进程交互的命令。
quit-----------退出LLDB调试器。
register-------访问当前线程和堆栈帧的寄存器的命令。
reproducer-----用于操作复制器的命令。复制器可以捕获带有所有依赖项的完整调试会话。由于复制程序从头到尾都需要整个调试会话,因此您需要在捕获或重播模式下启动调试器,通常通过命令行驱动。复制器是不相关的录制重播调试,因为在重播期间您无法与调试器交互。
script---------使用提供的代码调用脚本解释器并显示任何结果。如果没有提供代码,则启动交互式解释器。
session--------控制LLDB会话的命令。
settings-------用于管理LLDB设置的命令。
source---------用于检查由当前目标进程的调试信息描述的源代码的命令。
statistics-----打印有关调试会话的统计信息
target---------用于在调试器目标上操作的命令。
thread---------用于在当前进程中的一个或多个线程上操作的命令。
type-----------用于在类型系统上操作的命令。
version--------显示LLDB调试器版本。
watchpoint-----用于在监视点上操作的命令。
----------------------------------------分割线-----------------------------------------
一下命令为当前命令缩写(有关详细信息,请键入“help command alias”):例如“help br” 显示命令全名和参数信息
add-dsym-------通过指定调试符号文件的路径或使用选项指定模块,将调试符号文件添加到目标的当前模块之一。
attach---------按ID或名称附加到进程。
b--------------断点的简写方式之一,还有b,br。
bt-------------显示当前线程的调用堆栈。任何数值参数最多显示那么多帧。参数“all”显示所有线程。
c--------------继续执行当前进程中的所有线程,是continue缩写。
call-----------计算当前线程上的表达式。使用LLDB的默认格式显示任何返回值。
detach---------从当前目标进程分离。
di-------------反汇编当前目标中的指定指令。默认为当前线程和堆栈帧的当前函数,同dis缩写。
display--------在每次停止时计算表达式(请参阅“help target stop-hook”。)
down-----------进入下一步地址,默认一次跳到下一个地址,数值参数可以指定任意数字。
env------------查看和设置环境变量的简写。
exit-----------退出LLDB调试器。
f--------------从当前线程中按索引选择当前堆栈帧(请参阅“thread backtrace”)
file-----------使用参数作为主可执行文件创建目标。
finish---------完成当前堆栈帧的执行并在返回后停止。除非指定,否则默认为当前线程。
history--------转储此会话中命令的历史记录。
image----------用于访问一个或多个目标模块的信息的命令。
j--------------将程序计数器设置为新地址,是jump缩写。
kill-----------终止当前目标进程。
l--------------使用几种速记格式之一列出相关的源代码,list命令缩写。
n--------------源代码级别的单步,单步执行调用。除非指定,否则默认为当前线程,next命令缩写,同命令s或step。
ni-------------指令级单步,跨步调用。除非指定,否则默认为当前线程,nexti命令缩写,同stepi或si
p--------------计算当前线程上的表达式。使用LLDB的默认格式显示任何返回值,同po,print。
q--------------退出LLDB调试器,quit缩写。
r--------------在调试器中启动可执行文件,run缩写。
rbreak---------在可执行文件中设置一个或多个断点。
re-------------访问当前线程和堆栈帧的寄存器的命令。
repl-----------计算当前线程上的表达式。使用LLDB的默认格式显示任何返回值。
shell----------在主机上运行shell命令,同命令platform shell ls。
sif------------单步执行当前块,如果直接进入名称与TargetFunctionName匹配的函数,则停止。
t--------------更改当前选定的线程。
tbreak---------使用几种速记格式之一设置一个一次性断点。
undisplay------在每次停止时停止显示表达式(由停止挂钩索引指定。)
up-------------返回上一步地址,默认一次返回到上一个地址,数值参数可以指定任意数字。
v--------------显示当前堆栈帧的变量。默认为作用域中的所有参数和局部变量。可以指定参数、局部变量、文件静态变量和文件全局变量的名称。可以指定聚合变量的子级,同命令var,vo。
x--------------从当前目标进程的内存中读取。