iOS-底层原理系列01:
本文主要介绍iOS源码探索的三种方式
iOS源码探索的三种方式
- 符号断点跟踪流程
- 通过按住 ctrl+点击控制台step into按键
- 通过xcode显示汇编,跟流程
1. 符号断点跟踪流程
- 通过下alloc符号断点
- 选择断点 -> 选择左下角的Symbolic BreakPoint

- 输入alloc符号断点

- 在main中的JHPerson初始化alloc的地方加一个断点

- 选择断点 -> 选择左下角的Symbolic BreakPoint
- 先关闭刚才添加的全局符号断点,因为我只想看JHPerson alloc相关

- 然后运行程序当停到JHPerson alloc的时候重新启用alloc符号断点,继续运行,会发现停在下图位置:

- 可以看到alloc的源码位于libobjc.A.dylib中(需要去apple相应的开源网址中去下载源码)
2. 通过按住 ctrl+点击控制台step into按键
- 当断点运行到
- 按住ctrl点击控制台变化的step into按钮,多次使用
- 会到这一步,可以看到 objc_alloc_init
- 添加符号断点objc_alloc
- 放开运行你会发现停在了 libobjc.A.dylib, 这个库需要去Apple开源的开源库去下载源码
3.通过xcode显示汇编,跟流程
- 设置断点在JHPerson alloc位置,然后如动图打开Debug-Debug workFlow -Always show Dissassembly(总是显示反汇编)
- 按住ctrl 点击控制台变化的step info按钮跳入,一直到看到objc_alloc,然后设置符号断点 objc_alloc,就能看到最后的库是在 libobjc.A.dylib,同样需要去Apple开源库中去下载源码才能看
其他补充:
想要断点的时候在控制台显示反汇编,看到汇编调用过程?
解释:如下图,因为我在viewDidload打了断点,当跑起来的时候会把到viewDidload之前的堆栈调用拦截住,并显示在控制台上,这种显示方式是在xcode-debug-