iOS signal crash 堆栈获取符号化

一个栈帧的架构如下(从上往下,地址下降):

        PC

        LR

        SP

fp-->  FP


我们要回溯整个函数调用结构时,只要递归读取fp 和sp内容即可

可以定义这样一个结构体

{

    previous  //4个字节

    return_addr //4个字节

} frame

这种结构在栈去的存储如下:

return_addr  //对应的sp

previous   //对应的就是fp

最后递归从fp(首次为crash 后得到值)地址处往frame里面写入8个字节内容就可以了,

每个frame里面return_addr值为一条调用记录的函数入口地址,拿到地址就可以去符号化了。

写的有点粗糙,修正中....,有问题可以留言

思考:

1,函数参数怎么传递,参数个数大于4个和小于4个有什么区别

2,信号量异常传递链需要注意什么,怎么规避其它crash sdk抢占问题

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

推荐阅读更多精彩内容

  • 原文地址:C语言函数调用栈(一)C语言函数调用栈(二) 0 引言 程序的执行过程可看作连续的函数调用。当一个函数执...
    小猪啊呜阅读 4,722评论 1 19
  • 关键时刻,第一时间送达! 问题种类 时间复杂度 在集合里数据量小的情况下时间复杂度对于性能的影响看起来微乎其微。但...
    C9090阅读 926评论 0 1
  • 组件 计算机是一种数据处理设备,它由CPU和内存以及外部设备组成。CPU负责数据处理,内存负责存储,外部设备负责数...
    哆啦灬少A梦阅读 1,630评论 1 2
  • 一则,今日把昨天孩子的演讲视频录音书写下来发给少年演说家候选处,不管结果如何,至少我和孩子尽力去争取了。谋事在人,...
    李文燊阅读 353评论 0 1
  • 这部电影要是按照我自己的喜好肯定是不会看的,不管有多么经典,可是老师强制要求看所以就耐着性子看了两个多小时。 黑白...
    说吧_记忆阅读 701评论 0 0