[断点调试好助手]LLDB调试

来源:互联网 发布:荷兰留学知乎 编辑:程序博客网 时间:2024/05/01 10:34

初学者刚入门一般都不认识有这一调试工具,学习成本不高,你只要尝试在调试中开始使用调试器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=2p $b

call

call
call即是调用的意思。其实上述的po和p也有调用的功能。因此一般只在不需要显示输出,或是方法无返回值时使用call。 和上面的命令一样,我们依然在viewDidLoad:里面设置断点,然后在程序中断的时候输入下面的命令:

call [self.view setBackgroundColor:[UIColor redColor]]

运行程序,view的背景颜色变成红色了!

bt

打印调用堆栈,加all可打印所有thread的堆栈。

0 0
原创粉丝点击