常用LLDB 指令
指令格式
<command> [<subcommand>[ <subcommand>...] ] <action> [- options [option-value]] [argument | argument...]
- <command> : 命令
- <subcommand> : 子命令
- <action> : 命令操作
- <options> : 命令选项
- <arguments> : 命令参数
比如 给 test 函数设置断点
breakpoint set -n -test
-
breakpoint 是 <command>
-
set 是 <action>
-
-n 是 <options>
-
test 是 <arguments>
-
help<command>
- 查看指令的用法
比如help breakpoint
help命令实例.png
expression <cmd-options> -- <expr>
- 执行一个表达式
- <cmd-options> : 命令选项
- --: 命令选项结束符 ,表示所有命令选项已经设置完毕,如果没有命令选项,可以省略
- <expr> :需要执行的表达式
expression self.view.backgroundColor = [UIColor redColor] (OC)
expression self.view.backgroundColor = UIColor.red (swift)
- expresion , expression -- 和指令 print ,p ,call 的效果一样
- expression -O -- 和指令 po 的效果一样
可以动态的给程序添加一句代码,而不用在程序里面写 并且实时的看到调试效果 ,为了简单起见可以直接用p
p self.view.backgroundColor = UIColor.red
thread backtrace
- 打印线程的堆栈
打印函数调用堆栈信息.png
-
和指令bt 效果一样
-
thread return[<expr>]
-
让函数直接返回某个值 ,不会执行断点后面的代码
-
frame variable[<variable-name>]
-
打印当前堆栈的栈帧的变量
-
thread continue , continue ,c :程序继续运行
-
thread step-over, next , n : 单步运行 把子函数当做整体一步执行
-
thread step-in ,step ,s :单步运行 ,遇到子函数会进入子函数
-
thread step-out ,finish : 直接执行完当前的所有代码,返回到上一个函数
-
si , ni 和 s,n 类似
- s, n 是源码级别 (Source Level)
- si ,ni 是汇编指令级别 (Instruction Level)
breakpoint
- breakpoint set -a 函数地址
- breakpoint set -n 函数名
- breakpoint set -n test
- breakpoint set -n touchesBegan:withEvent:
- breakpoint set -n "-[ViewController touchesBegin:withEvent:]"
- breakpoint set -r 正则表达式
- breakpoint set -s 动态库 -n 函数名
- breakpoint list
列出所有的断点(每个断点都有自己的编号)- breakpoint disable 断点编号: 禁用断点
- breakpoint enable 断点编号:启用断点
- breakpoint delete 断点编号 :删除断点
breakpoint command add 断点编号
给断点预先设置需要执行的命令 到触发断点时,就会按照顺序执行
给断点加断点卡住时需要执行的命令.png
相当于
直接用Xcode操作.png
- breakpoint command list 断点编号
查看某个断点设置的命令
-breakpoint command delete 断点编号
删除某个断点的设置命令
内存断点
- 在内存数据发生改变的时候触发
- watchpoint set variable 变量
watchpoint set variable self->age
- watchpoint set expression 地址
watchpoint set expression &(self->_age)
- watchpoint list
- watchpoint disable 断点编号
- watchpoint enable 断点编号
- watchpoint delete 断点编号
- watchpoint command add 断点编号
- watchpoint command list 断点编号
- watchpoint command delete 断点编号
模块查找 image lookup
- image lookup -t 类型 :查找某个类型的信息
查找某个类型的信息.png
-
image lookup -a 地址 :依据内存地址查找在模块中的位置
依据内存地址查找错误所在的行号.png -
image lookup -n 符号或者函数名 :查找某个符号或者函数的位置
查找某个函数所在的文件和行数.png -
image list
列出所有加载的模块信息
image list -O -f 打印模块的偏移地址,全路径
网友评论