美文网首页
ios 底层原理 :探索源码的三种方式

ios 底层原理 :探索源码的三种方式

作者: 木槿WEIXIAO | 来源:发表于2021-06-08 08:21 被阅读0次

    本文主要介绍探索源码的三种方法

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

    下面详细讲解如何查找到函数所在的源码库,以 alloc 为例

    1.符号断点直接跟流程

    • 通过下 alloc 符号断点

      • 选择断点symbolic Breakpoint


        F6408E77-E135-47FA-AE89-2C473F3236FF.png
    • 符号中输入 alloc


      C557AA09-F029-4258-B5A8-A61E479560F2.png
    • main中的YXPersonal加一个断点
      在走这一部分断点之前,需要关闭上面新增的符号断点,因为系统层面也会调用很多次 alloc,如果不关闭的话就不能准确定位到我们要研究的 YXPersonal 的 alloc


      69C550B6-29CB-439D-BA92-19E280F4084D.png
    • 以下为alloc 符号断点处的堆栈情况,可以看出alloc 源码位于libobjc.A.dylib库(需要去苹果开源网站下载 objc 源码进行探索)


      DF75EBF1-9604-470A-BFF3-5B71079E4800.png

    2.通过按住 control + step into

    • main 中的 YXPersonal 处加一个断点


      D2FEC6BB-97AF-41E5-A365-EF30FDAD3CA1.png
    • 按住 control 键,选择 step into 键


      96C7DF97-F74C-47FA-B55C-3E65FE86D3A9.png
    • 进去后,显示为以下内容


      96B87C7A-ECB4-4E0B-8770-A601607D2125.png
    • 在下一个 objc_alloc 符号断点,就可以看到相应库信息


      image.png

    3.汇编跟流程

    • 在 main 中 YXPersonal 处下一个断点


      DCE02E3E-1100-4C8B-B1B8-86A18C423152.png
    • 工具栏 Debug -> DebugWorkFlow -> Always Show Disassembly


      0EF44AA3-62F6-45D0-86D2-A0E78FE8F7F0.png
    • 在 callq 处打一个断点,step into 进入


      3C9EA259-4AEA-4249-8154-C74821A26EF9.png
    7785C1E0-DC87-49E0-9983-2A0889A0B369.png
    • 同样通过 objc_alloc符号断点,得知源码库所在位置

    源码地址:
    总地址
    直接地址
    搜索 objc,选择对应版本

    相关文章

      网友评论

          本文标题:ios 底层原理 :探索源码的三种方式

          本文链接:https://www.haomeiwen.com/subject/icfqeltx.html