iOS LLDB调试命令(Low Lever Debug)
断点
-
设置断点
$breakpoint set -n XXX
set 是子命令
-n 是选项 是--name 的缩写! -
查看断点列表
$breakpoint list -
删除
$breakpoint delete 组号 -
禁用/启用
$breakpoint disable 禁用
$breakpoint enable 启用 -
遍历整个项目中满足Game:这个字符的所有方法
$breakpoint set -r Game:
流程控制
- 继续执行
$continue c - 单步运行,将子函数当做整体一步执行
$n next - 单步运行,遇到子函数会进去
$s
常用命令
1)image 命令可用于寻址:
"image lookup --address + 地址" 寻找栈地址对应的代码位置(当碰到给一堆堆栈错误时很有用),即可以直接定位追踪到Bug崩溃在哪一行,像如下这种情况,崩溃是全局的,根本没有定位到哪一行,而且很多时候lldb reason是没有提示的,这个时候就需要用到image lookup --address命令了,当我输入这行命令时image lookup --address 0x0000000106d94cbe,就会在后面打印出崩溃的 类名 所在方法 所在行。
-
p命令:
是输出基本类型的,但是我们发现其实都可以用。在输出结果中我们还能看到类似于$0,$1这样的符号,我们可以将其看作是指向对象的一个引用,我们在控制面板中可以直接使用这个符号来操作对应的对象,这些东西存在于LLDB的全名空间中,目的是为了辅助调试。 -
expr命令:
可以在调试时动态执行指定表达式,并将结果打印出来。常用于在调试过程中修改变量的值,与po类似。 -
call命令:
即是调用的意思。
5)bt命令:
打印调用堆栈,加all可打印所有thread的堆栈。
6)po 命令:
是‘point object’(即打印对象,且会调用description方法)。可以在调试时动态执行指定的表达式,并将结果打印出来,是个很有用的命令。