1.获取崩溃日志
可以iphone连接mac复制当时的崩溃日志。
Xcode->Window->Devices View Device Logs
如果是testflight的崩溃是可以分享的,分享出来可能是ips文件。
把文件名称改成my.crash
使用脚本把新版本崩溃日志转成老版本格式
这一步不是必须的,在后面解析的时候如果遇到下面这个的报错可以尝试这一步。
No crash report version in mycrash.crash
下载下面的文件
convertFromJSON.swift
然后如下面这样运行这个文件就能把老版本格式转成新版本:
swift convertFromJSON.swift -i {your_json_ips_file} -o {name_for_file_where_crash_will_be_saved}
把文件名称改成my.crash
2.获取dsym文件
每次编译生成的线上包,都会产生编译产物(这可能需要一些配置才会产生)。在下面的路径可以获取。
Xcode ->Window->Organizer 此时就能看到打包的Archives
选中崩溃的那个版本:Show in Folder
然后显示包内容
打开路径里面就有dsYMs文件夹,里面的后缀为app.dSYM就是目标文件
3.找到xcode的symbolicatecrash工具
find /Applications/Xcode.app -name symbolicatecrash -type f
返回的路径就是文件所在路径(可能有多个,去除掉明显是模拟器的,取剩下的最后一个)
4.执行解析
把symbolicatecrash工具、dSYM文件(我的是AIChat.app.dSYM)、my.crash文件放在一起,用命令行执行下面的指令:
./symbolicatecrash my.crash AIChat.app.dSYM > result.crash
可能遇到报错:
Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash
如果遇到了就在命令行里执行如下指令:
export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"
参考文档:
jogging20
AppleCrashScripts