xcode调试技巧

Xcode调试技巧之:LLDB


Xcode调试技巧之:LLDB

1.输出视图层级关系(这是一个被隐藏的命令):
po [[self view] recursiveDescription]
2.输出对象的属性,重写debugDescription,可以利用runtime动态获取属性并返回
3.call:执行一段代码
call NSLog(@"%@", @"yang")
4、expr:动态执行指定表达式
expr i = 101
输出:(int)$0 = 101

5、bt:打印当前线程堆栈信息
bt all
6、image:常用来寻找栈地址对应代码位置:
举个例子:
应用场景(数组越界)模拟代码:

NSArray *array = @[@"yang",@"she",@"bing"];
NSLog(@"%@",array[3]);

错误信息如下:

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 3 beyond bounds [0 .. 2]'

*** First throw call stack:
(
0   CoreFoundation                      0x000000010579734b __exceptionPreprocess + 171
1   libobjc.A.dylib                     0x00000001051f821e objc_exception_throw + 48
2   CoreFoundation                      0x00000001056d1eeb -[__NSArrayI objectAtIndex:] + 155
3   BGMultimediaDemo                    0x0000000104c25550 -[ViewController viewDidLoad] + 192
4   UIKit                               0x0000000105d5c06d -[UIViewController loadViewIfRequired] + 1258
......
......
......
21  BGMultimediaDemo                    0x0000000104c25adf main + 111
22  libdyld.dylib                       0x000000010857268d start + 1
23  ???                                 0x0000000000000001 0x0 + 1

)

libc++abi.dylib: terminating with uncaught exception of type NSException

这个时候我们如果怀疑出错的地址是0x0000000104c25550,那么我们可以使用下面命令来找出错误代码的位置:
image lookup --address 0x0000000104c25550
执行命令后输出结果如下:

Address: BGMultimediaDemo[0x0000000100001550] (BGMultimediaDemo.__TEXT.__text + 192)
Summary: BGMultimediaDemo`-[ViewController viewDidLoad] + 192 at ViewController.m:30

从上面输出结果中可以看出,错误位置应该是ViewController.m文件中的30行。是不是超级好用?反正我觉得好用。

Xcode断点技巧:

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Xcode 中的调试技巧与我们的日常开发息息相关,而这些调试技巧在我们解决Bug时,常常有事半功倍的作用,经常会用...
    咖啡绿茶1991阅读 3,251评论 0 1
  • 剑未配好,出门已是江湖。 最近一直没有更新简书是因为在开发和测试阶段,有任务,没有进行学习,不过在做任务的时...
    和珏猫阅读 12,598评论 9 75
  • 前言 Xcode调试(debug)是每位IOS开发者经常做的事,很基础也很重要,学到一些调试技巧无疑会给工作带来很...
    xmy1012阅读 5,536评论 0 1
  • 作者原文链接:点这里 一、普通操作: 1.打断点 当然也还可以监视某个变量! 在对象视图中,右键某个对象,点击“W...
    DestinyFighter_阅读 5,675评论 0 4
  • 同标题
    移动实验站阅读 1,891评论 0 0