LLDB是默认内置在Xcode中的动态调试工具,标准的LLDB提供了一组广泛的命令来与老版本GDB兼容,除了标准配置外,我们还可以自定义LLDB来满足实际需求
LLDB官方API文档
常见命令
设置断点
breakpoint set -n xxx
![](https://img.haomeiwen.com/i16490557/ec83706cfd130801.png)
![](https://img.haomeiwen.com/i16490557/3b75ec2bd09ecf0e.png)
查看断点
breakpoint list
![](https://img.haomeiwen.com/i16490557/ca04762597a70903.png)
启用、禁用、删除断点
breakpoint disable //禁用
breakpoint enable //启用
breakpoint delete //删除
![](https://img.haomeiwen.com/i16490557/4bedd6b52ca8d170.png)
遍历所有字符找到对应的字符设置断点
//整个项目
breakpoint set -r xxx //模糊匹配(包含)
breakpoint set -selector xxx //精准匹配(一致)
//指定某个文件
breakpoint set --file ViewController.m --selector save://精准匹配(一致)
![](https://img.haomeiwen.com/i16490557/208cd0253645a510.png)
![](https://img.haomeiwen.com/i16490557/47884c307a258b74.png)
![](https://img.haomeiwen.com/i16490557/aca2ec46568a04b2.png)
查看 breakpoint 命令
help breakpoint
![](https://img.haomeiwen.com/i16490557/d412476e129a418b.png)
流程控制
- 继续执行
c (continue) - 单步运行,将子函数当做整体一步执行
n (next) - 单步运行,遇到子函数会进去
s -
当执行遇到到breakpoint,watchpoint的时候执行一些命令
target stop-hook add -o
target stop-hook add -o
-
在执行到某一个具体的breakpoint,watchpoint时候执行一些命令
break command add
break command add
其他命令
- 执行、打印、修改代码
p (expression -O --)
po (expression --) - 查看某块列表
image list - 读取寄存器
register read - 写入寄存器
register write - 读取内存值
Memory read
堆栈信息
bt -- 查看当前堆栈
up -- 跳转到上一个堆栈
down -- 跳转到下一个堆栈
frame variable -- 打印当前frame(帧)的所有变量
![](https://img.haomeiwen.com/i16490557/a9362410ac6b9fa4.png)
thread return -- 直接返回,不执行后面的代码
watchpoint内存断点
watchpoint set variable
![](https://img.haomeiwen.com/i16490557/c45646b4c6b9b5d5.png)
watchpoint set expression
![](https://img.haomeiwen.com/i16490557/7c6eb500ce675266.png)
.lldbinit文件
我们可以在LLDB初始化的时候去设置自己需要的指令
![](https://img.haomeiwen.com/i16490557/bae9018ad1c30908.png)
![](https://img.haomeiwen.com/i16490557/e3aaa753ea30b0af.png)
网友评论