美文网首页程序员
玩转LLDB-持续更新

玩转LLDB-持续更新

作者: vincentgemini | 来源:发表于2018-04-07 12:04 被阅读0次

    前言

    在XCode开发过程中,经常会遇到一些问题。Bug无处不在,这时就需要扫清bug,让程序运行更完美。

    当XCode引入LLVM架构后,便诞生了一个强大的调试工具LLDB。

    本文主要介绍一下实际项目中常用的命令,后期也会不断更新。

    废话不多说,直接上干货。

    常用基本命令介绍

    • expression(简写expr),常用于在调试过程中修改变量的值。
    代码 调试
    • print(简写p),常用语打印变量,是对expression的封装。
    调试
    • po,在OC里所有的对象都是用指针表示的,所以一般用p、print、call、expression,打印的时候,打印出来的是对象的指针,而不是对象本身。如果想打印对象,需要使用命令选项:-O,为了更方便的使用,lldb为expression -O --定义了一个别名:po。
    调试
    • call,动态调用方法。
    代码 调试
    • thread backtree(简写bt),打印堆栈信息,添加all,可以打印所有线程的堆栈信息。
    调试
    • thread list,打印线程。
    调试

    其实thread是lldb的一个主命令,后面的有很多子命令,可以在控制台输入thread然后查看信息信息。

    Thread

    忘记命令可以在输入thread后按esc,由控制台提示子命令,同样适用其他调试命令。

    提示子命令
    • breakpoint,设置断点。
    代码 调试
    //根据名称设置断点
    breakpoint set -n printMsg:
    
    //指定文件名后,再根据名称设置断点
    breakpoint set -f ViewController.m -n printMsg:
    
    //指定文件名后,再指定行数设置断点
    breakpoint set -f ViewController.m -l 32
    
    断点处
    //指定文件名后,再指定行数设置断点,最后再设置条件
    breakpoint set -f ViewController.m -l 40 -c i==5
    
    断点处

    另外还有:

    //列出所有断点
    breakpoint list
    
    //断点状态使能设置
    breakpoint disable/enable
    
    //删除断点
    breakpoint delete  //删除全部
    breakpoint delete 1  //删除1号断点
    
    • image,命令可用于寻址,有多个组合命令,比较实用的子命令是lookup,后面可接不通的参数。

      //寻找指定地址对应的代码位置
      image lookup --address 0x0000000121299000
      
    调试
    //查找一个方法或符号的位置
    image lookup --name say
    
    调试
     //查看类信息
     image looup --type MxZPerson
    
    调试

    以上都是在实际开发中经常使用到的命令,后期还会更新,也希望能得到补充。

    参考资料:

    相关文章

      网友评论

        本文标题:玩转LLDB-持续更新

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