本文主要介绍下源码探索的三种方式:
* 符号断点直接跟流程
* 通过按住 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的版本
网友评论