符号表解析——(2)android符号表java解析应用

上篇 我们写了Andriod符号表解析,当对来说十分简单。(几乎都是纯java的东西)

IOS符号解析相对来说比较困难。

IOS符号表为 .sYDM文件(夹)

1,大小

mapping文件一般100-150K左右,大一些的一般不会超过1M

而 .sYDM文件一般2M以上,如果工程较大,可能会超过30M

2,解析方式

不同于Android的几乎纯java的解析,很明了的对应关系

IOS解析目前比较好用的是用IOS系统自带atos工具。

 

IOS符号表崩溃信息大概长这个样子

0   CoreFoundation                  0x0000000185432d8c 0x1852ed000 + 1334668 (<redacted> + 228)
1   libobjc.A.dylib                 0x00000001845ec5ec 0x1845e4000 + 34284 (objc_exception_throw + 56)
2   CoreFoundation                  0x00000001853cb750 0x1852ed000 + 911184 (<redacted> + 112)
3   CoreFoundation                  0x0000000185479a84 0x1852ed000 + 1624708 (<redacted> + 132)
4   GSD_WeiXin(wechat)              0x00000001026d5908 0x1026c4000 + 71944
5   UIKit                           0x000000018f04ae64 0x18eff8000 + 339556 (<redacted> + 1020)
6   UIKit                           0x000000018f04aa50 0x18eff8000 + 338512 (<redacted> + 28)
7   UIKit                           0x000000018f388380 0x18eff8000 + 3736448 (<redacted> + 1128)
8   UIKit                           0x000000018f0f7a4c 0x18eff8000 + 1047116 (<redacted> + 708)
9   UIKit                           0x000000018f0f76a4 0x18eff8000 + 1046180 (<redacted> + 164)
10  UIKit                           0x000000018f0eb3a8 0x18eff8000 + 996264 (<redacted> + 188)
11  UIKit                           0x000000018f0436f4 0x18eff8000 + 308980 (<redacted> + 1420)
12  QuartzCore                      0x00000001895b9fec 0x189497000 + 1191916 (<redacted> + 184)
13  QuartzCore                      0x00000001895be17c 0x189497000 + 1208700 (<redacted> + 324)
14  QuartzCore                      0x000000018952a830 0x189497000 + 604208 (<redacted> + 320)
15  QuartzCore                      0x0000000189552364 0x189497000 + 766820 (<redacted> + 580)
16  UIKit                           0x000000018f301598 0x18eff8000 + 3184024 (<redacted> + 256)
17  CoreFoundation                  0x00000001853da910 0x1852ed000 + 973072 (<redacted> + 32)
18  CoreFoundation                  0x00000001853d8238 0x1852ed000 + 963128 (<redacted> + 412)
19  CoreFoundation                  0x00000001853d8884 0x1852ed000 + 964740 (<redacted> + 1436)
20  CoreFoundation                  0x00000001852f8da8 0x1852ed000 + 48552 (CFRunLoopRunSpecific + 552)
21  GraphicsServices                0x00000001872dd020 0x1872d2000 + 45088 (GSEventRunModal + 100)
22  UIKit                           0x000000018f315758 0x18eff8000 + 3266392 (UIApplicationMain + 236)
23  GSD_WeiXin(wechat)              0x0000000102706bdc 0x1026c4000 + 273372
24  libdyld.dylib                   0x0000000184d89fc0 0x184d89000 + 4032 (<redacted> + 4)

而IOS的架构方式,又有很多种,例如:armv7,arm64 等

IOS符号表 自带UUID,可以在崩溃信息上传时候附带UUID,以保证再次解析时候,二者能够匹配

 

具体如何解析呢?

使用dwarf工具来调用 atos

java -jar  dwarf.jar atos -i "符号表" -a "待解析的内存地址"  -arch  armv7

PS:这里有个坑,执行结果的顺序可能会和输入的顺序不一致

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值