一、手动解析
1.借助dwarfdump命令UUid:
查看dSYM文件对应的app的uuid,确保和崩溃堆栈列表是同一个UUID;
有些类似Bugly这种三方会有生成带UUID的文件,使用dwarfdump指令的时候需要删除此文件<也可以直接查看该文件名字,名字中包含的有UUID>;
指令:dwarfdump --uuid xxx.app.dSY
2.使用DSYM文件还原堆栈
1)借助指令:dwarfdump xxx.app.dSYM --lookup <需要解析的相对地址>
2)有用的信息只有+号后面的。将其转化为十六进制,然后再加上符号表 TEXT 段的起始地址,就可以解析了,TEXT 段的起始地址使用otool可以获取:
3)日志捕获的堆栈一般有4列信息,库名称、运行时堆栈地址、运行时起始地址、偏移地址。(将39686636转换成16进制0x25D91EC)
4)所以得到相对地址就是0x0000000100000000 + 0x25D91EC(39686636)= 0x1025D91EC(十六进制转换器),使用dwarfdump尝试还原,如图所示,已经还原到的具体的方法:
二、工具解析
在 “错误信息内存地址” 那儿一行行替换