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

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

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

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

一、符号断点直接跟流程

1、添加断点 Symbolic Breakpoint

iOS底层原理01--源码探索的方式_第1张图片

iOS底层原理01--源码探索的方式_第2张图片

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

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

iOS底层原理01--源码探索的方式_第3张图片

下面是符号断点关闭时的状态:
iOS底层原理01--源码探索的方式_第4张图片

3、运行程序,断在LGPerson部分,打开all的断点:
iOS底层原理01--源码探索的方式_第5张图片

4、继续执行:

就能看到alloc符号断点断往的堆栈情况,从下面的图中可以看出,alloc的源码位于 libobjc.A.dylib库(需要去Apple 相应的开源网址下载 objc源码进行更深入的探索)
iOS底层原理01--源码探索的方式_第6张图片

二、通过按住 control + step into

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

iOS底层原理01--源码探索的方式_第7张图片

2、按住 control 键,选择step into键
iOS底层原理01--源码探索的方式_第8张图片

进去后,显示如下内容:
iOS底层原理01--源码探索的方式_第9张图片

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

三、汇编跟流程

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

iOS底层原理01--源码探索的方式_第10张图片

2、XCode工具栏选择,如下图
iOS底层原理01--源码探索的方式_第11张图片

3、按住 control 键,选择step into键,执行到下图
iOS底层原理01--源码探索的方式_第12张图片

4、按住 control 键,选择step into键,执行到下图
iOS底层原理01--源码探索的方式_第13张图片

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的版本

你可能感兴趣的:(iOS底层原理01--源码探索的方式)