IOS CrashReport 分析

IOS程序在真机运行程序出现crash状况时,机器会自动产生log文件,它包含了程序运行时的出错信息,但是这个crash文件显示的是出现问题的内存地址和一些系统的消息,无法查看程序中对应的崩溃地点,如果要查看对应于程序中的出错代码,需要使用symbolicatecrash工具将.dSYM文件和crash日志转换成可阅读的log信息,也就是将内存地址,转换成程序里的函数或变量和所属于的文件名.

准备所需文件

1、crash日志文件

2、symbolicatecrash 文件

symbolicatecrash是xcode自带的工具,一般位于/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash目录下,也可以在terminal下使用命令:

find /Applications/Xcode.app -name symbolicatecrash -type f

来查找symbolicatecrash的位置:

因为使用 symbolicatecrash需要进入这个目录,所以 为了方便调用,可以做一个快捷方式,以便在任意路径下都可以调用,使用命令建立快捷方式:
ln  -"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash"    /usr /local /bin /symbolicatecrash

3、dysm和app文件

dysm文件存在xcode打包的xcarchive文件中,使用打开xcode的organizer,选择顶部的archives,看到最后的打包记录,在finder中打开,右键查看包内容,里面有我们需要的.dSYM文件及.app文件:



转换CrashReport

将YourAppName.app、YourAppName.app.dSYM、crashReport.crash文件拷贝到同一个目录,然后在terminal进入该目录,中运行命令:
./symbolicatecrash xxxx.crash  xxxx.dsym 
>  crash.text
将最后分析出来的文件保存在crash.text文件中

注意,一般情况下,第一次使用symbolicatecrash会产生一个error,如下的错误信息

Error: "DEVELOPER_DIR" is not defined at /usr/local/bin/symbolicatecrash line 53.

解决办法是输入

export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"

如果生成的crash.text文件没有将内存地址信息转换为代码的类名、函数、行号,则是.dSYM文件与crashReport不对应所引起的。


你可能感兴趣的:(ios,Crash)