首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Chisel-让debug更生动

本文是一篇小白向的文章。内容是对Chisel的readme翻译,介绍了python在iOS开发中的一种简单辅助开发方式。

是一系列在iOS APP开发的过程中的LLDB的命令扩展集。

安装

安装完成以后会日志中回包含下面这段:

这里安装完以后,在bash中输入,如果存在,打开vim编辑这个文件,将上面这段代码写入文件:

如果文件不存在,先创建文件

再写入。

重启Xcode,安装就完成了,它的指令已经被包含到lldb指令集中了。

命令

如果你想看到LLDB中有哪些指令

另外Chisel还提供了一些好用的lldb指令,它是LLDB指令集的扩展,具体的指令可以通过查看某个指令的作用

假设,万一,如果你不知道help指令是干嘛的(怎么会连这个指令都不知道),可以尝试:

常用的Chisel指令:

拿和命令来说。你看到这个可能觉得这就是多次一举,明明有view debug可以用为什么要用这个,而且比这个直观。我最开始也是这么觉得的。但是一切都是为了效率,一切都是因为懒,懒得run两次,懒得重复等等。使用lldb可以在不用多次重复跑工程的前提下进行调试。比如show/hide命令,你不需要修改代码,就可以进行UI调试,隐藏或者显示某个视图。

再比如指令也是一个很有意思的指令,输入:

然后点击屏幕它会返回此时点击的view的信息,用来做UI调试也很方便,当然后面获取到点击的view的信息以后也可以跟结合使用查看它的响应链信息。

就可以拿到它的响应链信息

可以都自己尝试一下。

可以使用python添加私有的新指令,比如:

另外值得一提的是,熟悉LLDB的使用对后面学习iOS的逆向学习会有很大的帮助。本文仅仅是科普Chisel和对它的readme的简单翻译,我们要学习的是如何使用简单的python扩展自己的工具库。

上面的脚本使用了2个python库和facebook的

意思是引入fblldbbase库,但是调用时使用fb作为名称。

python的强大在于很多强大的库已经把原本简洁的python封装得更加的简介。这个脚本实际只有几行代码。

函数和函数。

函数是类的入口函数,里面已经将指令封装到中并返回指令,这个iOS开发应该都能看懂,打印keywindow的层级。方法将类的name作为指令名传出去

是库中封装的方法,它会拿到类的name作为指令,并获取run中的lldb指令,执行。

脚本生成以后将下面的路径写入就可以在Xcode中使用了

当然,想要封装出更多方便的指令,首先需要熟悉LLDB指令,更多关于LLDB的指令的熟悉还是需要自己去一个个慢慢玩。更强大的LLDB可以使用在逆向上,例如在不知道某个类的实现的时候,也可以使用LLDB在某个方法断点。

完。

【1】chisel 在github地址:https://github.com/facebook/chisel

欢迎关注,一起成长

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180607G1HKUL00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券