首先若是使用lldb,最好你要学着使用chisel来提升效率,不然你会浪费不少的时间,除非你本身会写python脚本,本身封装一些lldb的命令。 html
chisel的安装是十分简单,它是在终端经过brew安装的,具体能够点击连接参考github的安装说明,惟一须要注意的一点就是命令行安装完以后,它会在安装完以后显示出chisel的安装地址path.在执行下面的命令时候要记得替换/path/to/fblldb.py这一块。 python
# ~/.lldbinit ... command script import /path/to/fblldb.py script fblldb.loadCommandsInDirectory('/magical/ commands/')
若是安装成功的话,那么你就会看到以下图的这些命令。 git
这里大概会有30个命令吧,我记得我第一次装的时候没那么多命令的,facebook又更新了不少。其实这些封装的命令,就是使用python封装了一下函数而后调用。凡是这些封装的命令,你均可以经过多个lldb命令打出来,因此若是你会使用python的话,那么你能够根据本身的使用习惯封装一些经常使用的lldb命令。我使用了也有一段时间的chisel了,可是感受并非全部的命令都很经常使用,并且有写使用的场景也不是很清楚,因此在这里给你们普及一下,若是有谬误,请你们及时指正。(ps:和你们说个快捷键,cmd+k快速清楚console的信息。) github
通常咱们使用chisel的命令的时候,咱们能够经过 help + chisel命令,譬如 help + pvc,获得如何具体使用这个命令,可是有时候你看了help信息也不必定就会用呢。 正则表达式
这个命令是我最常使用的命令。它可以帮助咱们看到view的层级,即便咱们并无触发到一个断点。操做以下: express
这个命令能够直接给border 添加边框颜色和边框的宽度,使用以下: bash
border 0x79ec3140 -c green -w 2 app
border这个命令经常在咱们须要查看边框的边缘的问题,经常用到,并且咱们想要设置的直接在lldb中设置,彻底不须要从新写代码再次运行。我就是经过直接暂停程序,而且经过pviews命令找到的控件的地址,而且调用命令显示的。当咱们不须要的时候能够经过unborder这个命令去掉边框。整个过程一鼓作气。 ide
这个命令就是打印出来的一个控件(id)类型的内部结构,详细到使人发指!甚至是你自定义的控件中的类型,譬如这个styleView就是我自定义的,内部有个iconView的属性,其中的值它也会打印出来。好处,大家本身琢磨吧。(ps:这个demo,我会在下一篇博客中放出来,下篇博客是说transform的。 函数
打印出一个集成于UIResponder控件的消息传递链。
这个也方便咱们了解消息是如何传递的,打印的时候是倒叙打印的。
可使用mac下的预览app打开咱们的图片UIImage, CGImageRef格式的图片,甚至view和layer的图片 。
visualize 0x79ec3140//或者变量名,此地址是id类型的
pclass能够打印出一个对象的继承关系。
这个命令是模拟敲击一下屏幕,而且打印出你敲击屏幕时候事件接收的对象。
hide命令能够直接隐藏一个对象,移除当前遮挡的对象便于你观察后面的对象。show命令会让它再次显示出来。
这个命令就是lldb添加一个断点,譬如-viewWillAppear:这个方法,在当前控制器中你没有实现它,可是你又想在调用它的时机触发中断。
Arguments:
<expression>; Type: string; Expression to set a breakpoint on, e.g. "-[MyView setFrame:]", "+[MyView awesomeClassMethod]" or "-[0xabcd1234 setFrame:]"
这个我就不解释了,须要补充一点的是oc的方法是带:的。
其它命令我用着并非太多,并不表明他们不经常使用。只是我用的不太好而已,并且我认为用到是须要特殊的场景的,这个里说几个我感受有很大做用可是我用的又很差的。
我写的这些关于lldb的东西只是九牛一毛,它能够作的事情特别多,上面的参考都是我看过的比较好的lldb的知识,你们了解能够经过我上面的一些网站,更加深刻的第三篇,我一时半会不会写的,由于那个才是真正的进阶,而我还没达到那种高度,若是你也有好的关于lldb的技巧,理解之类的,欢迎分享。