美文网首页
Chisel的安装以及使用

Chisel的安装以及使用

作者: 含笑州 | 来源:发表于2019-03-05 16:53 被阅读0次

iOS调试之chisel

Chisel 是一个 LLDB 指令集合,用户辅助 iOS 应用差错。

安装

1.chisel的安装需要使用Homebrew,如果还没有安装Homebrew,可以使用下面的命令安装,如果你已经安装了,可以跳过这一步

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

2.用Homebrew安装chisel:

brew update

brew install chisel

3.在根目录下中添加命令

touch ~/.lldbinit

echo "command script import /usr/local/opt/chisel/libexec/fblldb.py" >> ~/.lldbinit

重启一下Xcode,安装完成。

更新

如果你想更新chisel,只需要输入更新的命令即可。

brew upgrade chisel

错误解决

1.安装homebrew时出现错误的话,可以看我另外一篇文章

2.出现Error: Checksum mismatch.

解决方案:rm -rf /Users/hanhan/Library/Caches/Homebrew/portable-ruby-2.6.3.mavericks.bottle.tar.gz(替换为自己的错误目录)

3.执行brew install chisel时很慢时

// 执行下面这句命令,更换为中科院的镜像:

git clone git://mirrors.ustc.edu.cn/homebrew-core.git/ /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core --depth=1

// 把homebrew-core的镜像地址也设为中科院的国内镜像

cd "$(brew --repo)"

git remote set-url origin https://mirrors.ustc.edu.cn/brew.git

cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"

git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git

// 更新

brew update

内置命令

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 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)>

3 visualize

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

visualize uiimageview

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

5 show & hide

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

   (lldb) show self.view

   (lldb) hide  self.view

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

(lldb)fv cate

    0x7fd5b6e06920 AlbumCategoryView

(lldb) hide  0x7fd5b6e069206.caflush

刷新UI,当调试时候,我们改变了UI的布局的时候,不用重新启动,使用caflush刷新UI即可,作为快捷键使用比较好。

7.taplog

点击屏幕,程序会暂停,会打印到你所触摸的view。

8.pclass

打印出对象的class以及是从哪儿继承过来的

9.pinternals

打印出对象内部的东西,有空可以看看系统的一些对象内部都有哪些东西

常用的就这些命令,当然你也可以自定义Chisel命令,但是需要你了解点python

相关文章

网友评论

      本文标题:Chisel的安装以及使用

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