友盟上统计的崩溃信息太少,根本看不懂到底是哪行出错,要想定位就要借助工具来分析,下面是在网上搜集到的定位崩溃信息的方法,做了下整理。
1.DSYM文件分析工具
dSYM是保存16进制函数地址映射信息的中转文件,会把debug的symbols包含在这个文件中,每次编译都会有一个新的dSYM文件。他有什么作用? 当release的版本 crash的时候,会有一个日志文件,包含出错的内存地址, 使用symbolicatecrash工具能够把日志和dSYM文件转换成可以阅读的log信息,也就是将内存地址,转换成可读的函数名和文件名,从而定位到错误的地方。
dSYM工具
1.将打包时的xcarchive文件拖入软件窗口内(文件名不包含空格)
2.选中xcarchive文件,右边会列出该xcarchive文件支持的CPU类型,选中错误对应的CPU类型.
3.对比错误给出的UUID和工具界面中给出的UUID是否一致
4.将错误地址和Slide Address 输入工具的文本框中,点击分析
5.可以定位出文件名方法名和崩溃的行数。
以上方法可以解决掉大部分的问题,但也有一些定位不到,可以用下面的方法解决:
在终端输入:
dwarfdump --arch=arm64 --lookup 错误内存地址 .xcarchive的路径/dSYMs/工程名.app.dSYM/Contents/Resources/DWARF/工程名
在结果中找到Line table file:错误位置