美文网首页值得学习iOS博客
iOS开发中常用的LLDB命令

iOS开发中常用的LLDB命令

作者: 毅个天亮 | 来源:发表于2017-07-05 16:22 被阅读21次

    更多命令可以查阅: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]
    

    会输出内存地址


    这里写图片描述

    然后在内存中搜索就能看到内容


    相关文章

      网友评论

        本文标题:iOS开发中常用的LLDB命令

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