[笔记分享] [Exception] 用户空间异常之Call Stack AP实现
从上一章分析可知,我们已经获取了call stack 的offset:
虽然得到了相对偏移,但是对于我们分析代码基本上还没什么用,因为咱们都是c代码嘛,所以要转换成c函数咯。
所以思路是这样子:
前面两步debuggerd已经帮我们完成了,而得到so的map我们目前只能在pc上完成,这个要借助objdump或者nm命令来完成map,手机上没这些命令。
另外,为了方便看log,我们将/data/tombstones目录下的文件按照时间规则来命名。将engrave_tombstone函数作如下改动就可以了。
AP实现
对于pc上的call stack转换ap实现也比较简单,按照上一节说的思路就可以了,这里将code贴出来,简单介绍下过程。
打开旧log文件,也就是从/data/tombstones下copy过来的文件,读取call stack的offset和所属的so名字,获取相应so的map表,查找offset从属于so中的哪个function,然后将这个function name一并写到新的log文件中。