alloc探索的三种方法
2020-09-02 本文已影响0人
lkm_0bdc
- 按住 control -step into
- 符号断点形式直接跟流程
- 汇编查看跟流程
下面详细讲解三种方法是如何查询所在的,这里是以alloc为例子。
按住 control -step into
因为模拟机是无法进行,我们需要真机运行。
首先我们需要打一个断点,然后按住,下方的箭头发生改变,点击箭头一直进入,就会看到alloc的源码位于libobjc.A.dylib(这里可以查看官方文档了解)。
如果在已知跟踪条件的情况下,我们可以直接使用符号断点(如果不清楚,可以看下面步骤),就会看到。
符号断点形式直接跟流
在main中的LGPerson处加一个断点,走之前需要关闭上面新加的符号断点,因为alloc调用的地方比较多,不关闭的话,不能准确的定位到LGPerson 的alloc方法。
符号断点流程
输入,如果不设置,将会违背已有的条件。
然后我们会看到很多的内容,这时候只需要过一个断点,就可以来到alloc的动态库。
从图中可以看出alloc的源码位于libobjc.A.dylib。
汇编查看跟流程
在main中的LGPerson处加一个断点,然后在上方进入汇编跟踪流,这个选项表示始终显示反汇编,直接定位到alloc的源码位于libobjc.A.dylib。
过断点到objec_alloc的位置按住control + step into
就可以在已知的情况下,通过符号断点知道源码所在库(需要去Apple开源objc源码下载进行了解)。
下面是Apple提供的源码下载地址
苹果开源源码汇总
这个地址直接通过搜索