美文网首页
备忘录之-LLDB 命令工具箱

备忘录之-LLDB 命令工具箱

作者: 忧郁的小码仔 | 来源:发表于2019-08-23 15:37 被阅读0次

    三年前总结过一些常用的LLDB命令LLDB tips总结,当时刚转来简书,写的比较糙,也没有用markdown来格式化,今天正好有时间,也算回顾一下吧。

    1. expression

    expression指令可用来修改变量的值或者执行某个方法
    可以简写成expr或者e

    expression命令

    expression相似的命令是callcall也可以用来执行某个语句

    call self.view.backgroundColor = [UIColor redColor];
    
    1. thread backtrace

    thread backtrace可以用来打印线程的堆栈调用信息,简写是bt

    thread backtrace
    1. image lookup -a 地址

    当程序crash的时候,可以使用这个命令查看堆栈地址对应的方法名等信息,相当于符号化。


    image lookup -a
    1. watchpoint set variable 实例变量

    该命令的作用和KVO的效果类似,使用该命令给实例变量添加一个断点,当实例变量的值被修改的时候就会触发断点,这在代码比较复杂的情况下调试变量非常的方便:

    watchpoint set variable

    注意,这里触发断点的时候,代码会先定位到实例变量定义的位置:


    pic

    点击控制台工具栏上试图层级按钮旁边的 向上的⬆️按钮,就会跳转到真正修改实例变量的位置了:


    pic2
    1. 给断点添加执行动作

    这个功能有时候还是比较有用的,就是在断点处添加一些执行动作,断点存在的时候,程序执行到这里就会自动执行断点里面的动作,移除断点后一切又会变回原来的逻辑。比如,下面,我们设定当程序执行到断点出的时候,执行isFirstIn=YES

    pic 1
    这里记得勾选 Automaticlly continue after evaluating actions选项,这样下次程序走到断点这里就不会暂停,而是直接执行了,执行效果如下:
    pic2

    当我们测试结束,直接将断点移除即可,这并不会影响正常的逻辑:


    pic3

    这里的好处就是,我们不需要修改代码就能控制逻辑,这比临时修改代码来做测试安全多了,毕竟手动修改的代码你可能会在上线的时候忘记改回去了。

    1. thread return 返回值

    当我们不想继续执行后面的逻辑的时候,可以使用该命令直接退出方法执行


    pic1 pic2
    1. print

    print可以用来打印变量,比如我们常用的po命令就是print object的缩写。
    另外,如果我们还可以使用下面的命令打印不同格式的变量值:

    `p/x`: 打印十六进制
    `p/t`:  打印二进制
    `p/c`: 打印字符
    

    相关文章

      网友评论

          本文标题:备忘录之-LLDB 命令工具箱

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