我们在用 Xcode 写代码调试 bug 时经常会用到 LLDB,一个很有趣的东西 🙄

expression
expression/expr/e 命令可以修改变量的值。

因为使用 p/po 命令可以查看某个变量的值。

那个$22感觉就像是这个变量指针,其实在 debug 的时候,$ 后面的这个数字会一直往上➕,只是一个调试的计数。

所以打断点的时候可以用 expression 命令来改变值。

frame variable/v
查看当前 frame 的变量

只要代码中的 log 不是那么杂乱的话,调试的时候是不大有必要在代码中添加 log 的,因为那样需要重新运行一遍代码,如果有几千个Compile Sources 那么就 GG😒

这个时候打个断点就比较方便。
最常见的是在左边显示行数的那栏点击添加,右键可以编辑(也可以使用 option+command+左键)

另一个比较常用的是打 Symbolic Breakpoint,比如

这样每次调用 viewDidLoad 方法的时候,都会进来。

Action有这么多

另外比较常用到的就是
F6:Step Over
F7:Step Into
F8:Step Out
另外的都是组合键,不大方便。
其他的比如用 Command+Y 来取消断点

还有的一些 bt 打印堆栈信息。感觉并没有直接看左边那栏方便;

image 命令用于寻址。
image lookup –address 0x000
不大常用。

有时候使用命令的时候会出现 unknown type 这种错误。
可以在前面加上(void).

比如打印 frame 的时候可以使用 p (CGRect)[self.view frame]

另外一些 Xcode 常用到的快捷键。

control+1:Show Related Items

control+2:Show Previous History

Control+5:Show Group Files

Control+6:Show Document Items

Command+F:Find

Command+option+F:Find and Replace

Command+Y:Deactivate BreakPoints

一些关于 LLDB 参考学习的文章
与调试器共舞-LLDB的华尔兹
LLDB 调试命令初探