马上就要国庆了,提前祝大家国庆快乐!!
前两天在gitHub上面发现了一个调试的三方框架,Chisel,由facebook开源的lldb插件,功能非常强大,可以让我们的调试更轻松。
1.安装Chisel
源码地址:Chisel
我们可以打开终端,通过brew来安装(如果你没有安装homebrew,参考 homebrew,命令如下:
brew update
brew install chisel
在安装完成之后,终端会用如下信息打印:
==> Caveats Add the following line to ~/.lldbinit to load chisel when Xcode launches: command script import /usr/local/opt/chisel/libexec/fblldb.py
复制Add the following line to ...下面那一句代码
echo command script import /usr/local/opt/chisel/libexec/fblldb.py >> ~/.lldbinit
其中替换 echo 后面 到 >> 前面的内容,最后如果没有问题的话,就可以直接重启Xcode了,在下一次启动后生效。
Chisel的内置命令,常用的有以下:
下面是Chisel的一些常用命令
1.pviews 可以用来打印view的层级
2.pvc
这个命令也是递归打印层级,但是不是view,而是viewController。利用它我们可以对viewController的结构一目了然。 其实苹果在IOS8也默默的添加了 UIViewController 的一个私有辅助方法 [UIViewController _printHierarchy] 同样的效果。
3.visualize可以用来预览一个view
4.show & hide这两个命令用来显示和隐藏一个指定的 UIView . 你甚至不需要Continue Progress. 就可以看到效果。
5.bmessage
这个命令就是用来打断点用的了,虽然大家断点可能都喜欢在图形界面里面打,但是考虑一种情况:我们想在
[MyViewController viewWillAppear:]
里面打断点,但是 MyViewController并没有实现 viewWillAppear: 方法, 以往的作法可能就是在子类中实现下viewWillAppear:,然后打断点,然后rebuild。
那么幸好有了 bmessage命令。我们可以不用这样就可以打这个效果的断点: (lldb) bmessage -[MyViewController viewWillAppear:]
上面命令会在其父类的 viewWillAppear: 方法中打断点,并添加上了条件:[self isKindOfClass:[MyViewController class]]