初学者刚入门一般都不认识有这一调试工具,学习成本不高,你只要尝试在调试中开始使用调试器LLDB,你会马上感受到调试器给你带来的便利。LLDB是LLVM下的调试器。Xcode从4.0开始编译器开始改用LLVM,相应的调试器也从gdb改为LLDB。而从 Xcode5.0开始所有工程也被自动设置为使用LLDB。
这里借鉴整理了一下别人的blog,作为学习笔记记录供各位参考
使用方法
- 先在需要调试的地方进行打断点,然后运行程序,停止在断电处后…会出现(lldb)字样(在NSLog显示信息的位置(调试框内),单击后便可以输入…)
- 输入命令进行操作
常用命令:
po
- po [self view] 随后调试器会输出这个 object 的 description。
- 在这个例子中可能是这样的信息:
(lldb) po [self view]
- (UIView *) $1 = 0x0824c800 <UITableView: 0x824c800; frame = (0 20; 768 1004); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x74c3010>; layer = <CALayer: 0x74c2710>; contentOffset: {0, 0}>
- p (int)[[[self view] subviews] count]
(lldb) po $1
(UIView *) $1 = 0x0824c800 <UITableView: 0x824c800; frame = (0 20; 768 1004); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x74c3010>; layer = <CALayer: 0x74c2710>; contentOffset: {0, 0}>
expr
修改值
int i = 2;
(--断点在此)
NSLog(@"i = %@",i);
(lldb) expr i=2
你会看到如下的输出:
(int) $0 = 2
继续运行程序,程序输出的信息是:
i = 2
变量a的值被改变
除此之外,还可以使用这个命令新声明一个变量对象,如:
expr int $b=2
p $b
call
call
call即是调用的意思。其实上述的po和p也有调用的功能。因此一般只在不需要显示输出,或是方法无返回值时使用call。 和上面的命令一样,我们依然在viewDidLoad:里面设置断点,然后在程序中断的时候输入下面的命令:
call [self.view setBackgroundColor:[UIColor redColor]]
运行程序,view的背景颜色变成红色了!
bt
打印调用堆栈,加all可打印所有thread的堆栈。
本文介绍如何使用LLDB调试iOS应用,包括设置断点、查看对象属性、修改变量值及调用方法等技巧。
2859

被折叠的 条评论
为什么被折叠?



