本文主要介绍确定方法调用的底层源码库的三种方式
1.通过 control + step into 结合断点跟流程
2.符号断点直接跟流程
3.根据汇编来查看
下面详细介绍这三种方法的操作流程,以alloc为例
1.通过 control + step into 结合断点跟流程
首先在alloc调用处打一个断点,然后运行程序,会断在alloc处
然后按住control键,点击step into:
进去后显示如下内容:
再点击step into 按钮,此时就会显示objc_alloc 调用的底层库libobjc.A.dylib:
最后去苹果相应的开源网址下载 objc源码进行更深入的探索。
2.符号断点直接跟流程
添加alloc的符号断点:
符号断点设置弹窗中在symbol中输入alloc:
在alloc调用的地方打一个断点,先关闭alloc的符号断点,因为调用alloc的地方特别多,如果不关闭的话不能准确的定位我们想要追踪的的alloc方法。
符号断点关闭状态:
运行程序,断点断在alloc调用处,然后打开符号断点:
点击下一步:
显示alloc的调用情况,就能看到alloc调用的底层库是libobjc.A.dylib库:
3.根据汇编来查看
xcode 工具栏 选择 Debug --> Debug Workflow --> Always Show Disassembly,这个 选项表示 始终显示反汇编 ,即 通过汇编 跟流程:
在alloc的调用处打一个断点:
程序运行,会进入到汇编页面:
按住control键 + step into按钮,会显示显示objc_alloc 调用的底层库libobjc.A.dylib:
Apple源码地址:搜索对应的库名,然后选择相应的版本下载