本文主要介绍源码探索的三种方式:
1、符号断点
跟流程
2、断点+
按住Control + step into
3、汇编跟流程
下面详细讲下三种方法如何进行底层分析,查找底层实现,以alloc函数为例:
1、符号断点
跟流程
1.1 添加符号断点
1.2
添加普通断点到想要探索的方法上
1.
3 运行代码(Command+R)
1.3.1 代码运行之前要关闭符号断点,目的是防止跳入其他的alloc函数中
注:如何关闭/打开断点?点击断点即可操作关闭/打开
1.3.2 当代码断在LGPerson方法上,再打开alloc符号断点,点击继续执行按钮即可。
1.4 执行结果
从上图可以看出 alloc 的源码位于libobjc.A.dylib
库(需要去Apple 相应的开源网址下载 objc源码进行更深入的探索)
2、断点+
按住Control + step into
2.1 添加普通断点到要探索的方法上
2.2
运行代码(Command+R)
2.2
按住Control + step into
进去后显示如下图:
2.3
继续下断点
再下一个objc_alloc
符号断点,符号断点后显示了 objc_alloc
所在的源码库
(需要去Apple 相应的开源网址下载 objc源码进行更深入的探索)
3、汇编跟流程
3.1
xcode 工具栏 选择 Debug
--> Debug Workflow
--> Always Show Disassembly
,这个 选项表示 始终显示反汇编 ,即 通过汇编 跟流程打开汇编模式
3.2 打一个普通断点到要探索的方法上
3.3
运行代码(Command+R)
执行结果:
3.3
按住control
,点击 step into
⬇️键,执行到下图的callq ,对应 objc_alloc
可以通过继续打断点的方式向下探索 。