Xcode 使用 chisel 插件及 chisel 源码解读

Xcode 使用 chisel 插件及 chisel 源码解读,第1张

LLDB 是 Xcode 中自带的一个调试工具 , chisel 是 facebook 开源的一个 LLDB 命令的集合,它简化和扩展了 LLDB 的命令,使用方法在 chisel github 中介绍的也比较详细。我在这里简单介绍一下,并结合我的使用经验,做些说明。

在 Xcode 控制台可以使用 help 命令查看所有支持的命令。 这里只介绍下面一些常用的命令:

上述 Command 的实现源码在 /chisel/commands/ 目录下

使用 help <command> 可以查看具体使用方法

pvc

pviews

pviews 打印的东西太多,"......" 省略了许多内容。想查找关心的 view,比较难查找,我们通过 help pviews 可以查看更详细的使用方法。

help pviews

我们加上 <aView> 和 -m 参数

pviews 0x7fda0000d760 -m

visualize

fvc enum

fv UIButton

hide 0x7fda0000d8c0

show 0x7fda0000d8c0

caflush

border

unborder

mask 0x7fda0000e7f0

unmask 0x7fda0000e7f0

presponder 0x7fda00015db0

bmessage

加载自定义 command 的过程,参考源码: fblldb.py : loadCommandsInDirectory()

实例: 新建 Python 文件 ~/lldbCustom/threadcheck.py , 修改 ~/.lldbinit 文件 :

添加 yhct 命令 ,打印当前线程; 添加 yhctm 命令 ,打印当前线程是否是主线程;

在 Xcode 控制台执行 help visualize 命令,控制台打印如下:

根据最后一行打印的路径,我们打开 FBVisualizationCommands.py 文件如下 ( "......" 省略了一些无关信息) :

在控制台输入 visualize 0x7fda0000e7f0 命令,会执行 FBVisualizeCommand 类的 run(self, arguments, options) 方法 , 该方法实现里调用 _visualize(target) 方法。

_visualize(target) 方法的执行步骤如下:

自定义的 Command 需要添加脚本 script fblldb.loadCommandsInDirectory('/path/to/') 到 ~/.lldbinit 文件中, 该脚本中,重点调用了 fblldb.py 文件中的 loadCommandsInDirectory() 方法 ( "......" 省略了一些无关信息) :

该方法的执行步骤如下:

做的项目中需要引用SourceTrees定义路径里的头文件,刚开始没有头绪,稍加思索发现太简单了。此SourceTrees非彼SourceTree,是Xcode“偏好设置”中的一个选项,见下图:以上面的“QUICK_COCOS2DX_ROOT”一项为例,我遇到的问题是想在工程中引用这个路径下include文件夹里的头文件。一般情况下如果想把某个文件夹中的头文件加入到工程中,可以在BuildSetting中的HearderSearchPath里添加形如$(SRCROOT)/..之类的路径,而$(SRCROOT)其实就是.xcodeproj文件所在的路径。其实,在上图SourceTrees中定义的QUICK_COCOS2DX_ROOT与SRCROOT的作用等同,都是充当路径的别名的。那么照葫芦画瓢,想引用别名为QUICK_COCOS2DX_ROOT路径下include文件夹里的头文件,就在BuildSetting中的HearderSearchPath里添加$(QUICK_COCOS2DX_ROOT)/.include路径就行了。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11525192.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存