iOS15之后的Crash日志解析

783 阅读1分钟

背景

iOS 15 之后苹果对符号化文件格式进行了 JSON 支持, 所以针对 iOS 15 以上产生的崩溃文件, 写入方式做了调整。新的ips文件无法再被symbolicatecrash符号化。需要用到CrashSymbolicator.py来进行符号化。

如何找到CrashSymbolicator.py

find /Applications/Xcode.app -name "CrashSymbolicator*" -type f

注:CrashSymbolicator.py文件运行环境依赖于其所在framework的包内容,故无法复制出来单独使用

如何使用

  1. dSYM文件和和ips放到同一目录下

  2. 执行CrashSymbolicator.py脚本(参数:-d '符号表路径' -o '输出路径' -p '苹果给的日志')

    1. python3 /Applications/Xcode.app/Contents/SharedFrameworks/CoreSymbolicationDT.framework/Versions/A/Resources/CrashSymbolicator.py -d ./ -o crash_report.txt -p djzy.ips
      

最后

为了省去以下繁琐的操作:

  • 定位CrashSymbolicator.py文件
  • ips文件改名
  • 繁琐的脚本参数

我写了以下脚本,只要将以下脚本放在与ipsdSYM相同的目录下,将脚本改成可执行文件,在命令行直接运行该脚本即可。

xcode_app=$(xcode-select -p)/../..
crashSymbolicator=$(find $xcode_app -name "CrashSymbolicator*" -type f)
ips=$(find . -name "*.ips" -type f)
python3 $crashSymbolicator -d . -o crash_report.txt -p $ips