崩溃日志分析

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



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


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



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


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.分析结果如下所示:



DYSMTools下载地址:

二、使用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 


















  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值