丢失dSYM文件后,如何解析Crash日志
如果之前打包的代码也找不到了,就不要往下看了起因
版本上线后,bugly上发现存在较多crash,由于符号表被清理磁盘的定时任务给删掉了,无备份也未上传bugly,所以只能看到未解码的堆栈(忽然发现竟然bugly无法下载到原始的crash.log文件)
解决
正常解码步骤:
- 找到symbolicatecrash工具,拷贝到待使用的文件夹
find /Applications/Xcode.app -name symbolicatecrash -type f
- Crash文件
这里是从 XCode-Crashes 里拿出来的- dSYM & app 文件
注意两者的UUID需要一致,xcrun dwarfdump --uuid xxx(dSYM / ipa 的路径)
- 设置环境变量
export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer
- 解码 (网上好多都没写.app 反正不包含我解不出来)
./symbolicatecrash ./xxx.crash ./xxx.app.dSYM ./xxx.app > symbol.crash
【丢失dSYM文件后,如何解析Crash日志】关于dSYM网上也有人试验过是一致的,我未实验验证:
如果两次打包的代码&xcode完全一致,两次打包的UUID是一致的
- 回滚代码重新打包
更换了打包电脑,所以UUID是不一致的 - 强行按照解码步骤解码
会失败,由于UUID不同,会直接提示无符号表No symbolic information found
- 修改 .crash 文件中的UUID为 新打出的包的UUID ,再次尝试解码,成功的符号化了crash日志
文章图片
image.png
上述印证了,代码一致时,每次打包对应的dSYM,即使UUID不一致,真实的文件内容也基本一致,可以用来解码crash文件。
这个结论有些粗糙,我并未进行过多次的dSYM二进制比对,不过遇到dSYM丢失时,可以按照这种方式尝试一下~~~
推荐阅读
- django-前后端交互
- 如何在Mac中的文件选择框中打开系统隐藏文件夹
- 使用composer自动加载类文件
- ssh生成公钥秘钥
- Android系统启动之init.rc文件解析过程
- 微信小程序基础知识
- 误删/清空.bashrc文件/内容
- JavaScript|vue 基于axios封装request接口请求——request.js文件
- 插件化无法获取或找到.so文件
- locate搜索