崩溃日志分析

一、使用DSYMTools 分析崩溃日志:
分析崩溃日志需要的文件:
1.崩溃日志
2.归档文件
1.崩溃日志的获取:
Xcode -> Window -> Devices -> 选择设备 -> View Device Logs
崩溃日志分析_第1张图片

崩溃日志分析_第2张图片
在左侧的列表选择崩溃日志,右键导出。
一个错误的崩溃日志内容如下(很懵有木有?完全看不懂有木有?)。
崩溃日志分析_第3张图片

需要注意红色圈出的行:
3 demo2 0x1000f7184 0x1000f0000 + 29060
20 demo2 0x1000f7aa0 0x1000f0000 + 31392
因为我们要找的具体崩溃就是要从这两个内存地址开始的。
2.归档文件的获取:
Xcode -> Window -> Organizer

崩溃日志分析_第4张图片

以上文件准备好之后,运行DSYMTools,开始分析崩溃日志,定位错误。
崩溃日志分析_第5张图片

1.打开DYSMTools工具之后,选择要分析的归档文件,或者直接将 xcarchive 或 dSYM 文件拖入窗口中。右侧的CPU类型选择arm64.
2.错误信息内存地址就填写0x1000f7184。崩溃日志中圈出的。
3.Slide Address
Slide Address 是需要计算的。以上图崩溃日志为例,计算方法如下:
3 demo2 0x1000f7184 0x1000f0000 + 29060
Slide Address = ( 0x1000f7184(转十进制)- 29060 )转16进制
有的错误的Slide Address是不需要计算的,在上图的崩溃日志中 0x1000f0000就是Slide Address。
4.分析结果如下所示:

崩溃日志分析_第6张图片

DYSMTools下载地址:
https://github.com/answer-huang/dSYMTools

二、使用symbolicatecrash工具分析crash文件。
1.在桌面创建文件夹crash文件
2.查找symbolicatecrash所在目录
find /Applications/Xcode.app -name symbolicatecrash -type f
结果:
/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash

3.使用拷贝命令,将symbolicatecrash拷贝到文件夹crash
cp /Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash /Users/xinjiejiaoyu/Desktop/crash

4.将dsYM文件和app文件拷贝到crash文件夹

5.使用cd命令进入到crash文件
cd /Users/xinjiejiaoyu/Desktop/crash
6.执行命令:
./symbolicatecrash /Users/xinjiejiaoyu/Desktop/crash/demo2\ \ 2017-5-31\ 上午11-50.crash /Users/xinjiejiaoyu/Desktop/crash/demo2.app.dSYM > Control_symbol.crash
如果出现错误: export EEVELOPER_DIR = "/Application/Xcpde.app/Contents/Developer"
-bash: export: `=': not a valid identifier
执行命令
export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"

然后再执行命令,./symbolicatecrash /Users/xinjiejiaoyu/Desktop/crash/demo2\ \ 2017-5-31\ 上午11-50.crash /Users/xinjiejiaoyu/Desktop/crash/demo2.app.dSYM > Control_symbol.crash
在终端执行完命令之后,在crash文件夹下会多出来一个Control_symbol.crash文件。然后打开这个文件,就能看到符化后的崩溃日志了
注:我遇到的错误
Unsuccessful stat on filename containing newline at ./symbolicatecrash line 279.
错误的可能原因:crash文件和DSYM文件不一致,对应的UUID不同。检验两个文件的UUID是否一致。
查看DSYM文件的UUID:
$ dwarfdump --uuid demo2.app.dSYM
UUID: 10F8C932-254A-3F41-9D01-F3F195C64719 (armv7) demo2.app.dSYM/Contents/Resources/DWARF/demo2
UUID: E76576CC-66FC-341B-BB8E-9634A2F5EA97 (arm64) demo2.app.dSYM/Contents/Resources/DWARF/demo2
查看crash的UUID:
可以使用命令:
  1. grep "appName armv" *crash 
或者
  1. grep --after-context=2 "Binary Images:" *crash 


















你可能感兴趣的:(iOS,ios开发,崩溃日志分析)