iOS底层原理01--源码探索的方式

本文主要介绍下源码探索的三种方式:

* 符号断点直接跟流程
* 通过按住 control + step into
* 汇编跟流程

接下来详细讲下这三种方法是如何查找到函数所在的源码库,以alloc为例:

一、符号断点直接跟流程

1、添加断点 Symbolic Breakpoint



2、在LGPerson的初始化处打一个断点

在代码走到这个断点之前,需要先将上面的符号断点关闭,因为alloc的调用有很多,如果开启了就不能准确的定位到LGPerson的alloc方法。


下面是符号断点关闭时的状态:

3、运行程序,断在LGPerson部分,打开all的断点:

4、继续执行:

就能看到alloc符号断点断往的堆栈情况,从下面的图中可以看出,alloc的源码位于libobjc.A.dylib库(需要去Apple 相应的开源网址下载 objc源码进行更深入的探索)

二、通过按住 control + step into

1、在LGPerson的初始化处打一个断点,并运行程序,程序会断在LGPerson位置


2、按住 control 键,选择step into键

进去后,显示如下内容:

3、再下一个 objc_alloc 的符号断点;
按住 control 键,选择step into键,就能看到objc_alloc符号断点断往的堆栈情况,从下面的图中可以看出,alloc的源码位于libobjc.A.dylib库(需要去Apple 相应的开源网址下载 objc源码进行更深入的探索)

三、汇编跟流程

1、在LGPerson的初始化处打一个断点,并运行程序,程序会断在LGPerson位置


2、XCode工具栏选择,如下图

3、按住 control 键,选择step into键,执行到下图

4、按住 control 键,选择step into键,执行到下图

5、再下一个 objc_alloc 的符号断点;
按住 control 键,选择step into键,就能看到objc_alloc符号断点断往的堆栈情况,从下面的图中可以看出,alloc的源码位于libobjc.A.dylib库(需要去Apple 相应的开源网址下载 objc源码进行更深入的探索)

以下是Apple 提供的源码下载地址
1、Apple 所有开源源码汇总地址,根据相应的版本查找对应的源码,以mac 10.15为例: macOS --> 10.15 --> 选择10.15 --> 搜索 objc
2、Apple 比较直接的源码下载地址,直接搜索想要下载的源码名称即可,例如objc直接搜索 objc --> objc4/ --> 选择相应的objc的版本

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容