iOS 调用栈回溯
前言 在做「大内存分配监控系统」时,我深入学习了一下堆栈回溯相关的底层原理,以及符号化相关的知识。这篇文章是当时记下的学习笔记。 调用栈回溯的目的是追踪某个函数的调用链。比如函数 A 调用了函数 B,函数 B 又调用了函数 C,调用链就是 A → B → C。调用栈回溯拿到的一般是函数的内存地址信息,无法看到函数名,需要再做一次符号化操作。 本文参考: App LibcArm DeveloperProcessor_registerDive into System CPU 寄存器 CPU 寄存器是 CPU 芯片上数据存储的小型区域,位于内存结构的顶部,具有最快的数据访问速度,用来暂时存放参与运算的数据和运算结果。 ARM64 指令集提供了下列用于调用栈的寄存器: x0~x30 通用寄存器负责的功能如下: * x0~x7: 参数寄存器,用于把参数传递给函数并返回结果。可以用作临时寄存器或调用者保存的寄存器变量,可以在调用其他函数之间的函数内保存中间值。