一、lldb介绍
lldb是一个高效的debug工具。Xcode里面自带lldb,平时开发我们设置断点,实际利用的就是lldb的能力。我们可以在Xcode的底包控制台找到lldb命令输入和查看的地方,lldb可以让你暂停运行的程序,同时提供多个命令比如查看变量的值、查看堆栈信息等功能。 lldb官网文档是lldb.llvm.org/。
二、lldb常用调试命令
1.如何进入lldb
有两种方式可以进入lldb调试 (1)给代码加断点,如图:
(2)按程序暂停键,如图:
2.常用命令
(1)help--帮助命令,列举出lldb支持的所有命令。如果我们忘记了,某些命令,可以通过help查看帮助提示。
(2)p 命令,输出变量或者表达式的值,基本数据类型会直接输出数值;OC对象,会输出存储的内存地址,并同时生成一个临时变量。
(3)po 命令,输出变量或者表达式的值(基本数据类型),如果是oc对象,相当于调用了description方法,比如数组:会遍历输出数组的内容。
(4)bt 命令,返回当前线程所有的调用堆栈,和xcode左侧的调用堆栈,显示的是一致的。这个顺序是倒序的。
(5)frame 相关命令
这里首先解释一下frame的概念,表面意思是帧,简单粗暴的理解就是一个个的方法。
如上图所示,frame0就是未执行完的test方法,frame1是调用test的viewDidLoad方法。
程序默认是在frame0的,可以使用frame variable查看当前frame所有变量的值
使用frame select 序号 切换到某个frame
(6)动态更新UI
使用call、p命令,可以更改界面上的某个UI组件 如图:原始的视图是红色的,我们可以使用lldb命令,把颜色更改为蓝色。
使用p命令,拿到这个view的变量
然后通过call命令,调用setBackgroundColor方法
注意,使用call命令的时候,必须要告诉lldb 被调用方法的返回值类型,比如void或者BooL,否则会报错。
最后调用
[CATransaction flush]刷新UI,就可以看到view的颜色变成蓝色。
三、总结
lldb还有很多命令,比如breakpoint等,大家可以去搜搜相关资料,学习的路永无止境,最后感谢,多位大佬的总结: