美文网首页
xcode调试技巧

xcode调试技巧

作者: jameiShi | 来源:发表于2019-04-02 22:00 被阅读0次

    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调试技巧

          本文链接:https://www.haomeiwen.com/subject/vfvnbqtx.html