LLDB 调试常用命令

发布于 2025-04-13 10:50:21 字数 3120 浏览 5 评论 0

LLDB 调试在 iOS 开发中经常会用到,这里记录一下常用的调试命令。

断点命令

命令效果
breakpoint set -n 函数名给某函数下断点
breakpoint set -n "[类名 SEL]" -n "[类名 SEL]" ...给多个方法下断点,形成断点组
breakpoint list查看当前断点列表
breakpoint disable(enable) 组号(编号)禁 用(启用) 某一组(某一个) 断点
breakpoint delete 编号禁用某一个断点
breakpoint delete 组号删除某一组断点
breakpoint delete删除所有断点
breakpoint set --selectore 方法名全局方法断点,工程所有该方法都会下断点
brepoint set --file 文件名.m --selector 方法名给.m 实现文件某个方法下断点
breakpoint set -r 字符串遍历整个工程,含该字串的方法、函数都会下断点
breakpoint command add 标号某标号断点过后执行相应命令,以 Done 结束,类似于 Xcode 界面 Edit breakpoint
breakpoint command list 标号列出断点过后执行的命令
breakpoint command delete删除断点过后执行的命令
b 内存地址对内存地址下断点

其他常用命令

命令效果
p 语句动态执行语句(expression 的缩写),内存操作(下同)
expression 语句同上,可缩写成 exp
po 语句print object 常用于查看对象信息
c程序继续执行
process interrput暂停程序
image list列出所有加载的模块 缩写 im li
image list -o -f 模块名只列出输入模块名信息,常用于主模块
bt查看当前调用栈
up查看上一个调用函数
down查看下一个调用函数
frame variable查看函数参数
frame select 标号查看指定调用函数
dis -a $pc反汇编指定地址,此处为 pc 寄存器对应地址
thread info输出当前线程信息
b trace -c xxx满足某个条件后中断
target stop-hook add -o "frame variable"断点进入后默认做的操作,这里是打印参数
help 指令查看指令信息

跳转命令、读写命令

命令效果
n将子函数整体一步执行,源码级别
s跳进子函数一步一步执行,源码级别
ni跳到下一条指令,汇编级别
si跳到当前指令内部,汇编级别
finish返回上层调用栈
thread return不再执行往下代码,直接从当前调用栈返回一个值
register read读取所有寄存器值
register read $x0读取 x0 寄存器值
register write $x1 10修改 x1 寄存器的值为 10
p/x以十六进制形式读取值,读取的对象可以很多
watchpoint set variable p->_name给属性添加内存断点,属性改变时会触发断点,可以看到属性的新旧值,类似 KVO 效果
watchpoint set expression 变量内存地址效果同上

命令缩写

  • breakpoint :br、b
  • list:li
  • delete:del
  • disable:dis
  • enable:ena

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

文章
评论
29 人气
更多

推荐作者

小镇女孩

文章 0 评论 0

文江

文章 0 评论 0

Tomcat

文章 0 评论 0

嘦怹

文章 0 评论 0

渃风

文章 0 评论 0

ʕ◔ϖ◔ʔ

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文