查看指令
help <command>
指令格式
<command> [<subcommand>] <action> [-options [optionvalue]] [argument]
-
command: 命令
-
subcommand: 子命令
-
action: 操作指令
-
options:命令选项
-
argument:命令参数
-
例如设置断点指令
breakpoint set -n dismiss- breakpoint:command
- set:subcommands
- -n :options
- dismiss:argument
image ---- 模块查找指令
- image list:打印APP现有的模块
- image lookup
- -F <函数名>:查找某个函数
- -t <类名>:查看某个类型
- -a <内存地址>:查看内存地址对应的代码
- -n <名>:查找符号或函数的位置
frame ---- 打印当前函数中的参数
- frame variable简写为var、v
- frame variable -O简写为vo,打印参数详细信息
language ---- 特定于源语言的命令
- objc
- class-table dump <类名>:打印关于类的一些信息
- tagged-pointer info <地址>:打印tagged-pointer变量的一些信息,可以使用vo查看变量地址信息
register ---- 访问当前线程和寄存器的命令
- read:读取寄存器存储数据
- write: 修改单个寄存器的值
breakpoint ---- 用于在断点上操作的命令
- breakpoint list: 打印所有断点
- breakpoint set: 添加断点
- -n <函数名>:根据函数名称设添加断点,相同函数名都会添加上
- -r <函数名>:模糊匹配添加,函数名包含参数的都会被添加上
- -s <动态库名称> -n <函数名>:给动态库添加断点
- breakpoint disable:禁用断点
- breakpoint enable:启用断点
- breakpoint delete:删除断点
- breakpoint command
- add:在断点出添加一些指令
- list:打印添加的指令
- delete:删除指令 上述4个指令都通过编号操作,可以用breakpoint list查看断点编号
watchpoint ---- 在观察点上操作的命令
- watchpoint set
- variable <属性名>:根据属性名添加一个内存监听
- expression <内存地址>:给一个内存地址添加监听
- watchpoint list:打印监听列表
- watchpoint disable:禁用监听
- watchpoint enable:启用监听
- watchpoint delete:删除监听 上述4个指令都通过编号操作,可以用watchpoint list查看断点编号
expression ---- 执行一个表达式
- expression 和 expression -- 、print 、 p、 call效果相同
- expression -O -- 和 po的效果相同
thread ---- 流程控制指令
- thread backtrace:打印函数调用堆栈
- thread return:不执行当前断点后面的代码,直接返回
- thread continue̵: 过掉断点,程序继续运行(但具体操作时进程会被卡死),指令 continue̵、c为相同指令
- thread step-over:单步运行,执行函数时不跳入函数体,next、n为相同指令
- thread step-in:单步运行,执行函数时跳入函数体,step、s为相同指令
- thread step-out:执行当前函数所有代码,返回调用函数,finish为相同指令
- thread step-inst-over: 汇编指令一步一步调用,遇到函数执行不仅进入,ni为相同指令
- thread step-inst: 汇编指令一步一步调用,遇到函数执行且进入,si为相同指令