玩转LLDB-持续更新

玩转LLDB-持续更新_第1张图片

前言

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

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

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

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

常用基本命令介绍

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

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

玩转LLDB-持续更新_第6张图片
Thread

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

玩转LLDB-持续更新_第7张图片
提示子命令
  • breakpoint,设置断点。
玩转LLDB-持续更新_第8张图片
代码
调试
//根据名称设置断点
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
    
玩转LLDB-持续更新_第9张图片
调试
//查找一个方法或符号的位置
image lookup --name say
调试
 //查看类信息
 image looup --type MxZPerson
玩转LLDB-持续更新_第10张图片
调试

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

参考资料:

  • The LLDB Debugger
  • 认识Xcode中的重要成员:lldb调试器

你可能感兴趣的:(玩转LLDB-持续更新)