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

OC底层源码的三种方式

1.直接使用符号断点

2.通过control + step into (step into instruction)

3.汇编方法

下面以alloc为例,详细描述如何使用三种方法进行源码探索

一、直接使用符号断点

1.选择断点Symbolic Breakpoint

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

3.在HLPerson *p1 = [HLPerson alloc]处加一个断点

tips:在走到这部分断点之前,需要关闭上面新增的符号断点,原因是因为alloc的调用有很多,如果开启了就不能准确的定位到HLPerson的alloc方法

4.程序运行, 断在HLPerson *p1 = [HLPerson alloc]部分时,打开 alloc 符号断点,继续执行

以下为alloc 符号断点断住的堆栈调用情况,从下图可以看出alloc的源码位于libobjc.A.dylib库(从Apple 相应的开源网址下载 objc 源码进行查看)

二、通过control + step into (step into instruction)

1.在HLPerson *p1 = [HLPerson alloc]处加一个断点,运行程序,会断在此位置

2.按住control键,选择 step into 键

3.进去后,显示如下内容,然后再添加一个objc_alloc符号断点

4.符号断点后显示了 objc_alloc 所在的源码库

三、汇编方法

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

2.在HLPerson *p1 = [HLPerson alloc]处加一个断点,运行程序

3.当程序运行到[HLPerson alloc]时,堆栈调用信息如下,此时按住control,点击 step into 键进入,执行到对应 objc_alloc

4.同样通过添加 objc_alloc 的符号断点然后继续执行,便可查看源码所在库

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容