本文主要介绍探索源码的三种方法
- 符号断点直接跟流程
- 通过按住 control + step into
- 汇编跟流程
下面详细讲解如何查找到函数所在的源码库,以 alloc 为例
1.符号断点直接跟流程
-
通过下 alloc 符号断点
-
选择断点symbolic Breakpoint
-
-
符号中输入 alloc
-
main中的YXPersonal加一个断点
在走这一部分断点之前,需要关闭上面新增的符号断点,因为系统层面也会调用很多次 alloc,如果不关闭的话就不能准确定位到我们要研究的 YXPersonal 的 alloc
-
以下为alloc 符号断点处的堆栈情况,可以看出alloc 源码位于libobjc.A.dylib库(需要去苹果开源网站下载 objc 源码进行探索)
2.通过按住 control + step into
-
main 中的 YXPersonal 处加一个断点
-
按住 control 键,选择 step into 键
-
进去后,显示为以下内容
-
在下一个 objc_alloc 符号断点,就可以看到相应库信息
3.汇编跟流程
-
在 main 中 YXPersonal 处下一个断点
-
工具栏 Debug -> DebugWorkFlow -> Always Show Disassembly
-
在 callq 处打一个断点,step into 进入
- 同样通过 objc_alloc符号断点,得知源码库所在位置