分目录1

249 阅读2分钟

iOS-底层原理系列01:

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

iOS源码探索的三种方式

  • 符号断点跟踪流程
  • 通过按住 ctrl+点击控制台step into按键
  • 通过xcode显示汇编,跟流程

1. 符号断点跟踪流程

  • 通过下alloc符号断点
    • 选择断点 -> 选择左下角的Symbolic BreakPoint
    • 输入alloc符号断点
    • 在main中的JHPerson初始化alloc的地方加一个断点
  • 先关闭刚才添加的全局符号断点,因为我只想看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-