LLDB是默认内置在Xcode中的动态调试工具,标准的LLDB提供了一组广泛的命令来与老版本GDB兼容,除了标准配置外,我们还可以自定义LLDB来满足实际需求
LLDB官方API文档
常见命令
设置断点
breakpoint set -n xxx
image.png
image.png
查看断点
breakpoint list
image.png
启用、禁用、删除断点
breakpoint disable //禁用
breakpoint enable //启用
breakpoint delete //删除
image.png
遍历所有字符找到对应的字符设置断点
//整个项目
breakpoint set -r xxx //模糊匹配(包含)
breakpoint set -selector xxx //精准匹配(一致)
//指定某个文件
breakpoint set --file ViewController.m --selector save://精准匹配(一致)
全局模糊匹配
全局精准匹配 某个文件精准匹配
查看 breakpoint 命令
help breakpoint
image.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(帧)的所有变量
thread return -- 直接返回,不执行后面的代码
watchpoint内存断点
watchpoint set variable
watchpoint set variable
watchpoint set expression
watchpoint set expression
.lldbinit文件
我们可以在LLDB初始化的时候去设置自己需要的指令
image.png image.png
网友评论