OC底层探索(二) :源码探索的三种方式

源码探索的三种方法

  • 符号断点直接跟流程
  • 通过按住control+step into
  • 汇编跟流程

1. 符号断点

以alloc为例:

  • 选择断点Symbolic Breakpoint

OC底层探索(二) :源码探索的三种方式

  • 符号断点中输入 alloc
    OC底层探索(二) :源码探索的三种方式

  • 在alloc断点处跟进
    在执行alloc时,打开alloc符号断点,
    OC底层探索(二) :源码探索的三种方式
    然后进入下面页面,我们就会发现alloc 的源码libobjc.A.dylib库
    OC底层探索(二) :源码探索的三种方式

2. 通过按住control+step into

  • 在alloc处打一个断点,
    OC底层探索(二) :源码探索的三种方式
  • 当断点执行到alloc时,按住control然后点击step into
    OC底层探索(二) :源码探索的三种方式
  • 然后进入断点中,我们

OC底层探索(二) :源码探索的三种方式
(注:由于我使用的是低版本的xcode,没有找到objc_alloc,所以借用一下别人的图片)

  • 再设置一个符号断点,我们就会发现当前函数是在哪个类库中
    OC底层探索(二) :源码探索的三种方式

3. 汇编跟流程

  • 在alloc处打一个断点,
    OC底层探索(二) :源码探索的三种方式
  • xcode 工具栏 选择 Debug --> Debug Workflow --> Always Show Disassembly,这个 选项表示 始终显示反汇编 ,即 通过汇编 跟流程
    OC底层探索(二) :源码探索的三种方式
  • 按住control,点击 step into ⬇️键,执行到下图的callq ,对应 objc_alloc,并跟进,
    OC底层探索(二) :源码探索的三种方式
  • 然后进入断点中,我们

OC底层探索(二) :源码探索的三种方式

  • 再设置一个符号断点,我们就会发现当前函数是在哪个类库中

OC底层探索(二) :源码探索的三种方式