前言
在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
调试
以上都是在实际开发中经常使用到的命令,后期还会更新,也希望能得到补充。
网友评论