iOS Crash解析

iOS 根据内存地址定位crash

2020-08-13  本文已影响0人  等一个最好的自己


一、背景:

       1.很多小伙伴接入友盟后,会发现里面有崩溃日志,但是不会告诉我们崩溃到哪个函数了。

          2.测试同学发给我们crash文件,也不会告诉我们崩溃到哪个函数

二、解决办法:

针对友盟,发现可以上传dSYMs符号表文件,然后友盟里就会显示出具体崩溃到哪个函数了。具体操作,xcode->organizer->xcarchive->dSYMs,注意,必须找到崩溃对应的xcarchive,dSYMs整个文件夹压缩上传就可以了。

针对测试同学发给的crash文件。同样的方法找到xcode->organizer->xcarchive->dSYMs->appName.app.sSYM 和 xcode->organizer->xcarchive->Products->Applications->appName.app->appName把这两个文件放到一个文件夹中。打开crash文件,

一般以app命名的地方就是崩溃的位置。0x0000000100e0c1b8为虚拟内存地址,0x100bb000为基地址。开始进行命令行操作,cd到这个文件夹下,输入命令行:atos -arch arm64 -o appName -l 0x100bb000(基地址),回车后,你会发现还会输入,然后在输入(虚拟内存地址),然后你就会神奇的发现终端会输入崩溃的方法了。

其实友盟的崩溃日志也可以这样看,但是友盟的基地址和虚拟地址注意看清楚

Base Address 基地址

AppName 虚拟内存地址

还有一种情况就是,自己手中没有xcarchive文件,但是有ipa包,也是可以转换符号表的。

下载及生成restore-symbol

然后ipa文件显示包内容,找到appName,可以把appName放到桌面,打开终端,cd到桌面,执行./restore-symbol appName_arm64 -o appName,后续操作就上边从xcarchive获取到appName.app和appName的操作一样了,比如:atos -arch arm64 -o appName_arm64 -l 0x100bb0000。

ps:不喜欢终端的小伙伴可以自行去度娘一下可视化工具,也可以分析出来。

延伸一下知识

1、dSYM文件:iOS构建时产生的符号表,它是内存地址与函数名,文件名,行号的映射表;iOS应用crash时也有堆栈,release版的应用,crash时的堆栈信息,全是二进制的地址信息;iOS平台中,dSYM文件是保存符号表的目标文件,文件名通常为:xxx.dSYM(符号表dSYM概念和获得途径资料地址https://developer.umeng.com/docs/66632/detail/71519

2、atos

The atos command converts numeric addresses to their symbolic equivalents 我们使用atos命令来完成符号化,具体命令如下:$atos -arch <Binary Architecture> -o <Path to dSYM file>/Contents/Resources/DWARF/<binary image name> -l <load address> <address to symbolicate>其中:

1.Binary Architecture:arm64、armv6、armv7armv7s 根据自己的情况来写。

2.Path to dSYM file: dSYM文件的路径。

3.binary image name: 你工程的名字。

4.load address: 基地址,如果我们的崩溃日志中没有这个信息(比如上面的Crash信息中就没有包含),就需要我们手动去计算这个load address:laod address = address to symbolicate - offset,比如:0x0000000102838119转化为十进制为4337139993,再减去偏移量265,为4337139728,在转化为十六进制0x0000000102838010

5.address to symbolicate:当前方法的内存地址。

章仅供参考,如有啥错误,请大家留言指正,谢谢!

友情链接:https://www.dazhuanlan.com/2020/01/06/5e12aaabf0437/

                   https://www.jianshu.com/p/f5415b22d2de

                   https://www.jianshu.com/p/489c8295b8ee

上一篇 下一篇

猜你喜欢

热点阅读