利用breakpad在android环境下多so文件解析

android支持如下7中CPU架构

目前android支持如下7中CPU架构:

  • armeabi 第5代 ARM v5TE,使用软件浮点运算,兼容所有ARM设备,通用性强,速度慢(只支持armeabi)
  • armeabi-v7a 第7代 ARM v7,使用硬件浮点运算,具有高级扩展功能(支持 armeabi 和 armeabi-v7a,目前大部分手机都是这个架构)
  • arm64-v8a 第8代,64位,包含AArch32、AArch64两个执行状态对应32、64bit(支持 armeabi-v7a、armeabi 和 arm64-v8a)
  • x86 intel 32位,一般用于平板(支持 armeabi(性能有所损耗) 和 x86)
  • x86_64 intel 64位,一般用于平板(支持 x86 和 x86_64)
  • mips 基本没见过(支持 mips)
  • mips64 基本没见过(支持 mips 和 mips_64)

单个cpu架构文件夹下包含多个so文件

现在以armeabi-v7a架构下的文件夹为例

如上图所示,该文件夹下的共有6个so文件。
在生成符号表时,需要对这6个so文件都执行执行如下步骤:

  1. 执行生成符号文件命令:
$ dump_syms libxxx.so > libxxx.so.sym 
  1. 查看libxxx.so.sym文件内容,从头部获取uuid,BB0351B14DDA42A6D36FA6EA358B49D50
$ head -n1 libxxx.so.sym
MODULE Linux arm BB0351B14DDA42A6D36FA6EA358B49D50 libxxx.so
  1. 以uuid为名创建文件夹(特别注意:文件夹的路径)
$ mkdir -p symbols/libxxx.so/BB0351B14DDA42A6D36FA6EA358B49D50/ 
$ mv libxxx.so.sym symbols/libxxx.so/BB0351B14DDA42A6D36FA6EA358B49D50/ 

4.针对每个so文件重复上面步骤,最终所有生成的符号表文件都在symbols文件夹下,切记一定要切记:一定要是symbols这个名称,不然找不到符号表。最终生成符号表的目录结构如下所示:
在这里插入图片描述
5.最重要的一点:解析dump文件(切记:最终利用minidump_stackwalk解析dump文件时,符号表指向symbols文件夹即可,无需特定指定某个so文件,便可获取crash的行号信息)

$ ./minidump_stackwalk filename.dmp /symbols > crashed.log
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值