iOS 使用dsym符号化线上crash日志(ips文件)

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
iOS 使用dsym符号化线上crash日志(ips文件)_第1张图片

选中崩溃的那个版本:Show in Folder
iOS 使用dsym符号化线上crash日志(ips文件)_第2张图片
然后显示包内容
iOS 使用dsym符号化线上crash日志(ips文件)_第3张图片
打开路径里面就有dsYMs文件夹,里面的后缀为app.dSYM就是目标文件
iOS 使用dsym符号化线上crash日志(ips文件)_第4张图片

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

你可能感兴趣的:(ios)