iOS底层学习之-找到方法所在的源码库的三种方法
一、下符合断点跟流程
怎么添加符合断点
-
1、进入Breakpoint navigator
-
2、点击左下角【+】按钮(create a breakpoint)
- 3、填写需要监控的方法名
按Enter
键,然后符号断点就添加成功了。
怎么找到方法所在的源码库
下面以alloc
方法为例,打好符号断点之后:
- 在alloc方法的调用代码处打上断点
- 关闭alloc符号断点(因为很多系统的类可能会调用到alloc方法,所以我们只需要在断点走到我们所研究的alloc方法调用的地方才需要)
- 运行项目,等代码停到我们调用alloc方法的代码处
- 打开alloc符号断点,点击
continue program excution
继续运行 -
接下来代码会进入下图展示的界面:
- 然后点击上图红框圈起来的按钮
step into
,则进入下图所示界面:
可以看出 alloc 方法内部调用了libobjc.A.dylib库
的_objc_rootAlloc
方法.
自此,我们就找到了alloc 的源码库为libobjc.A.dylib库
二、control + setpInto
使用 control+stepInto
查找方法源码库的具体步骤:
- 在alloc方法的调用代码处打上断点
- 运行项目,等代码停到我们调用alloc方法的代码处
- 按住
control
,用鼠标点击stepInto
按钮(可能需要点击多次),则可以进入下图所示界面:
- 我们从图中可以看出
alloc
方法走到了objc_alloc
方法,然后我们添加objc_alloc
的符号断点。添加完后可以看到下图所示界面:
(据说Xcode12.x
就看不到符号所属的源码库了。) - 从图中我们可以看到
objc_alloc
属于libobjc.A.dylib
库。
至此,我们通过control + stepInfo
+符号断点
的方式找到了alloc
方法的源码库。
三、汇编查看跟流程
直接通过汇编的形式来定位方法所属源码的步骤如下:
在
alloc
方法的调用代码处打上断点-
当断点停住之后,按照下图所示设置Xcode:
图中设置的意思就是一直显示汇编流程。
-
然后按住
control
,用鼠标点击stepInto
按钮(可能需要点击多次),可以进入如下界面:
-
我们从图中可以看出
alloc
方法走到了objc_alloc
方法,然后我们添加objc_alloc
的符号断点。添加完后可以看到下图所示界面:
(据说Xcode12.x就看不到符号所属的源码库了。) 从图中我们可以看到
objc_alloc
属于libobjc.A.dylib
库。
至此,我们通过汇编查看跟流程
的方式找到了alloc
方法的源码库。
以上就是全部内容,该文适合跟其他底层文章结合使用。