iOS 通过ips分析crash

注:ips文件和crash文件不一样,Xcode13,iOS15以前设备ips文件改后缀成crash可以解析,但是之后 Apple 对符号化文件格式进行了 JSON 支持, 所以针对 iOS 15 以上产生的崩溃文件, 写入方式应该是做了调整, 所以在对 iOS 15 以上崩溃文件进行符号化时, ips改后缀会出现符号化失败, 报错 No crash report version in file 的问题,改为直接使用 CrashSymbolicator.py

1、确认dSYM和ips文件是否对应,命令行

注:终端显示的是符号 - 拼接的,crash和ips文件都是连起来的

2、查看dSYM的UUID
dwarfdump --uuid xxx.app.dSYM
3、ips文件的UUID,双击打开
image.png
4、利用CrashSymbolicator.py符号化解析 ips 文件

CrashSymbolicator.py脚本存放在该路径下:

/Applications/Xcode.app/Contents/SharedFrameworks/CoreSymbolicationDT.framework/Versions/A/Resources
4.1、如果不一样可能是Xcode名字不一样?可以利用下面的命令去查找,如过你的Xcode就叫Xcode话,不然改成自己Xcode路径:
find /Applications/Xcode.app -name CrashSymbolicator -type f
5、使用CrashSymbolicator.py 不能像symbolicatecrash一样直接复制出来,因为这个脚本import其它文件也在同一个目录下,我们可以终端命令进入到这个文件夹下把 dSYM 文件和 ips 文件放入到该文件夹下执行符号化解析命令。
image.png
6、进入当前目录,解析日志
python3 CrashSymbolicator.py -d /xxx.app.dSYM -o /xxx.crash -p /xxx.ips

-d '符号表路径' -o '输出符号化路径' -p '苹果给的崩溃日志'

7、查看日志
image.png
8、使用aps命令结合符号文件定位崩溃行
atos -o 项目名.app.dSYM/Contents/Resources/DWARF/项目名 -arch arm64 -l 基地址 偏移后的地址
atos -o /Users/xxx/Desktop/crash01/allstaints_nft.app.dSYM/Contents/Resources/DWARF/allstaints_nft -arch arm64 -l 0x102140000 0x10220bbf4
xxxx-2022-10-13-140216.ips
命令行

感谢https://www.jianshu.com/p/88c915cd0be5

你可能感兴趣的:(iOS 通过ips分析crash)