基础操作
指令 | 作用 |
---|---|
c | continue,进程继续运行 |
r | run,进程重新运行 |
kill | run,kill进程 |
s | step-in |
n | step-over |
finish | step-ou |
断点
指令 | 作用 |
---|---|
b | 打印所有断点 |
b -[NSString stringWithFormat:] | Objective-C函数断点 |
b objc_msgSend | C/C++函数断点 |
b resignFirstResponder | 对所有含有resignFirstResponder的函数进行断点 |
br del 1 | 删除某个断点(标号可以通过「打印所有断点」取得 |
堆栈
指令 | 作用 |
---|---|
bt | 打印当前线程堆栈 |
bt all | 打印所有线程堆栈 |
up | 跳到上一个调用栈 |
down | 跳到下一个调用栈 |
p 和 po
p指令可以打印结构体以及基本类型,有时会出现异常,尝试类型强转,如 p (int)a 。
除了p指令外,LLDB增加了po,如 po self ,用来打印一个OC对象的description。
又如下面这句:
po [[[UIApplication sharedApplication] keyWindow] recursiveDescription]```
– [UIView recursiveDescription]
可以用来打印一个UIView的层次结构。在Reveal还没有出来之前,这个方法是用来快速查看UIView的层次结构。
事实上,p 和 po 指令是用来执行代码,并输出返回值结果。用来打印输出只是返回结果罢了。所以,在断点处输入
po [self.view setBackgroundColor:[UIColor whiteColor]]```
是可以实时生效的。
其他
image指令可以操作符号相关的东西。
image lookup -a 0x0916cf7a
image lookup -r -n UIWebView
上面两个指令,前者通过地址打印符号,后者通过关键字打印与此关键字相关的符号。