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

作者: sprint | 来源:发表于2015-10-22 10:44 被阅读2061次

如果你想快速高效调试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,由于我不懂 所以就略过了.....

相关文章

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

    如果你想快速高效调试IOS程序不妨学习下LLDB插件-Chisel,如果你使用过po,p等调试命令,是否觉得它们还...

  • iOS之LLDB常用调试命令

    iOS之LLDB常用调试命令熟练使用 LLDB,让你调试事半功倍使用facebook开源的Chisel调试Home...

  • LLDB 调试学习

    LLDB调试必看:与调试器共舞 - LLDB 的华尔兹Facebook/Chisel 安装chisel: Alte...

  • Chisel常用命令总结

    Chisel简介 Chisel是Facebook开源的一款lldb调试工具,其实就是对系统lldb命令的封装,开发...

  • LLDB调试-Chisel使用

    LLDB 调试器集成于 Xcode 内部并支持 C++ ,Python插件,这里解释了其工作原理。常用命令包括pr...

  • iOS 调试-Chisel-LLDB命令插件

    Chisel 调试工具,Facebook开源的一款lldb调试工具-->GitHub 安装Chisel 1.安装h...

  • UI 调试利器 Chisel 的使用

    参考文章1: 调试器的妙用LLDB调试器和GDB调试器命令映射表 1 什么是 Chisel Chisel 是一个 ...

  • iOS调试之chisel

    iOS调试之chisel Chisel 是一个 LLDB 指令集合,用户辅助 iOS 应用差错。 安装 chise...

  • Chisel的安装以及使用

    iOS调试之chisel Chisel 是一个 LLDB 指令集合,用户辅助 iOS 应用差错。 安装 1.chi...

  • lldb调试增强插件Chisel安装教程

    简介 Chisel 是facebook公司开源的一款lldb调试增强插件,它有一些比较好用的命令,可以帮助你梳理项...

网友评论

  • wlerl:博主,我想问下,我安装了后,只能pview + 地址(类似 0x7sjdhjshds)的这种,无法pview self.windows这种,这样如果一个工程大了,就很难定位到对应的变量,请问应该怎么设置呢?
    7a946bf5d2ca:我也遇到了
    sprint:@wlerl 按道理来说 不需要额外配置的 暂时没有遇到这个问题 你解决了吗?

本文标题:教你如何使用Chisel增强LLDB调试

本文链接:https://www.haomeiwen.com/subject/ychthttx.html