天天看点

ios崩溃日志分析,无dSYM文件

问题场景

大部分情况下,我们都拿不到dSYM文件,只有一份ipa文件+一个crash文件,应该如何定位具体崩溃的代码呢?

实例说明

首先本人建立了一个demo工程,写了一段会crash的代码,如下图

ios崩溃日志分析,无dSYM文件

然后打包成ipa包,如下

ios崩溃日志分析,无dSYM文件

安装到手机上,运行,得到崩溃日志,如下

ios崩溃日志分析,无dSYM文件

可以看到上面有两个信息,一个是运行崩溃的手机架构是arm64,一个是下面的未符号化的地址信息。

1,首先我们需要先对我们的执行文件瘦身,获取到arm64的执行文件,使用命令

lipo -thin arm64 test/yzzs -output test/yzzs_arm64
           

yzzs是ipa中的执行文件,后面是输出文件,执行完如下

ios崩溃日志分析,无dSYM文件

2,下载工具restore-symbol.

3,执行restore-symbol工具命令得到符号化的执行文件,使用命令

./restore-symbol test/yzzs_arm64 -o test/yzzs_symbol
           

yzzs_arm64是上一个步骤得到的arm64架构的执行文件,后面是输出符号化后的执行文件

4,下面通过系统工具atos导出对应的符号化后的地址,使用命令

atos -arch arm64 -o test/yzzs_symbol -l 0x100e00000 0x0000000100e061cc 0x100e00000 0x0000000100e06068
           

执行完如下,地址信息被符号化出来了,并不需要用到dSYM文件

ios崩溃日志分析,无dSYM文件

完毕