工欲善其事必先利其器Swift开发实战iOS 知识点

教你如何使用Chisel增强LLDB调试

2015-10-22  本文已影响2061人  sprint

如果你想快速高效调试IOS程序不妨学习下LLDB插件-Chisel,如果你使用过po,p等调试命令,是否觉得它们还是太弱,想知道一个view的层级还要使用code去打印(虽然我也这样干过),简直不能忍受,下面就让Chisel来解救你吧。

1.Chisel的安装

Github地址:https://github.com/facebook/chisel
Chisel的安装非常简单,你只要安装了homebrew环境,一切都是那么自然轻松。

1. brew update
2. brew install chisel

安装完成后最后出现一个安装目录,类似

command script import /usr/local/opt/chisel/libexec/fblldb.py

这时候你只需要~/.lldbinit文件中添加

==> Caveats
Add the following line to ~/.lldbinit to load chisel when Xcode launches:
 command script import /usr/local/opt/chisel/libexec/fblldb.py

记得把上面的script替换为你的

如果 ~/.lldbinit 不存在 使用以下命令添加一个即可

touch ~/.lldbinit

然后重启Xcode

2.内置命令

2.1 pviews

这个命令可以打印一个view的层级,如:

(lldb) pviews self.window
     |<UIWindow: 0x7fd5b6816780; frame = (0 0; 375 667);    
 gestureRecognizers = <NSArray: 0x7fd5b6817770>;
    layer = <UIWindowLayer: 0x7fd5b68263f0>>
     | <UILayoutContainerView: 0x7fd5b6941780; 
    frame = (0 0; 375 667); autoresize = W+H; gestureRecognizers = <NSArray: 0x7fd5b694fc10>; layer = <CALayer: 0x7fd5b6931250>>
     | <UINavigationTransitionView: 0x7fd5b6949620; frame = (0 0;             375 667); clipsToBounds = YES; 
    autoresize = W+H; 
layer = <CALayer: 0x7fd5b6946e20>>

2.2 pvc

pvc可以打印一个viewcontroller的层级,而不是view 如:

(lldb) pvc self.mMDrawerController**
      <MMDrawerController: 0x7fd5b658b8c0; 
    view = <UIView; 0x7fd5b658cd00>;  frame = (0, 0; 375,     667)>
     | <SampleAlbumListVC: 0x7fd5b658bc90;
        view = <UIView; 0x7fd5b66be7a0>;  frame = (0, 0; 375, 667)>
     | <SlideMenuVC: 0x7fd5b6589b50; 
        view = <UIView; 0x7fd5b684f790>;   frame = (inf, inf; 0, 0)>

2.3 visualize

visualize这个命令比较强大,它可以使用预览App打开UImageView CGImageRef UIView CALayer 如:

visualize uiimageview

2.4 fv & fvc

这两个命令是用来通过类名搜索当前内存中存在的view和viewController实例的命令,支持正则搜索。

 (lldb)  fvc mm
0x7fd5b658b8c0 MMDrawerController

 (lldb)fv cate
  0x7fd5b6e06920 AlbumCategoryView
  0x7fd5b6d63f80 AlbumCategoryView
  0x7fd5b6d66e60 AlbumCategoryView
  0x7fd5b6d69d40 AlbumCategoryView
  0x7fd5b6d6cc20 AlbumCategoryView
  0x7fd5b6e0a150 AlbumCategoryView

2.5 show & hide

这两个命令用来显示和隐藏一个指定的 UIView

   (lldb) show self.view
   (lldb) hide  self.view

也可以使用内存地址隐藏和现实view,比如通过 fv cate找到一个view后使用hide隐藏它

 (lldb)fv cate
    0x7fd5b6e06920 AlbumCategoryView

 (lldb) hide  0x7fd5b6e06920

常用的就这些命令,当然你也可以自定义Chisel命令,但是需要你了解点python,由于我不懂 所以就略过了.....

上一篇下一篇

猜你喜欢

热点阅读