OC底层原理01 - 探索源码的三种方式

OC底层源码探索的三种方式

  1. 直接使用符号断点
  2. 通过control+step into
  3. 汇编方法

下面将以alloc为例,描述如何分别使用三种方式进行源码探索

一、直接使用符号断点

直接下alloc的符号断点。

  1. 选择断点Symbolic Breakpoint


    image.png
  2. 在输入符号断点名称中,符号位置输入alloc


    image.png

以下为alloc符号断点处的堆栈调用信息,从下图中可以看到alloc位于libohjc.A.dylib,当调用[LGPerson alloc]时,会调用[NSObject alloc],并且下一步是调用libohjc.A.dylib中的_objc_rootAlloc方法。


image.png

二、使用control + step into的方式

在[LGPerson alloc]时下个断点,当程序运行到此处时,按住control键,选择单步调试的step into。此时会显示以下内容:


image.png

可以看到,此时调用了libobjc.A.dylib库中objc_alloc方法。再objc_alloc以符号断点的方式继续下一步探索。

三、汇编方法

Xcode 工具栏选择 Debug --> Debug Workflow --> Always Show Disassembly,这个选项表示始终显示反汇编 ,即通过汇编跟流程。


image.png

当程序运行到[LGPerson alloc]时,堆栈调用信息如下,找到堆栈信息中的callq objc_alloc


image.png

可以看到,此时调用了libobjc.A.dylib库中objc_alloc方法。再objc_alloc以符号断点的方式继续下一步探索。

至此,我们已经了解了三种源码探索的方式,后续将在探索的过程中使用这三种方式。

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