基础操作
| 指令 | 作用 |
|---|---|
| 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
上面两个指令,前者通过地址打印符号,后者通过关键字打印与此关键字相关的符号。