更多命令可以查阅:The LLDB Debugger
1.po + 对象
(lldb) po self.view
<UIView: 0x7fe93bd21bf0; frame = (0 0; 414 736); autoresize = W+H; layer = <CALayer: 0x7fe93bd028a0>>
2. p + xx
可以是基础类型或者对象,但p+对象不会打印出详细信息只有内存地址。 打印下面count时如果使用点语法则console会报错,应该调用get方法。另外注意加上类型转换console才知道怎么处理。
(lldb) p (int)[ [ [self view] subviews] count]
(int) $1 = 2
也可以用po打印出基础类型
(lldb) po (int)[ [ [self view] subviews] count]
2
3.expr (expression)
使用expr改变变量的值,还没找到swift中的操作方法
expr name = @"Kevin Durant"
(__NSCFString *) $2 = 0x00007fe143d01e20 @"Kevin Durant"
4.断点
断点可以设置条件,action(如打印,debugger命令等)
5. bt命令
debug模式下,程序crash后,进入lldb模式:
在终端输入bt
命令,Xcode会自动输出最后的一次调用堆栈:
里面有
stop reason
等信息,从截图中可以看到[ViewController touchesBegin:withEvent:]
方法中出了问题。
6. 对于一些经常po不出来的属性,可以先导入框架,如下图:
expr @import UIKit
p UIScreen.mainScreen.bounds
7.打印NSData中的内容
正常情况下po NSData只会得到一堆二进制数据,而不是内容。常用的打印NSData内容的方法是转成NSString再打印NSString。
下面是直接得到NSData内容的方法:
po [data bytes]
会输出内存地址
然后在内存中搜索就能看到内容