iOS crash文件解析项目符号不显示解决方案【更新至Xcode13 iOS15新类型crash日志 imageOffset】

背景

线上app崩溃后,拿到的crash文件只有地址和偏移地址,需要将crash文件或者ips文件符号化,才能定位出具体crash的位置。
脚本文件

一、清单1【由测试组提供】

1、.crash或者.ips文件【必须】
2、*.app.dSYM文件【必须】
3、ipa【可选】
4、dSYMs文件夹,具体符号在这个文件夹里【必须】
/dSYMs/Contents/Resources/DWARF/文件,此文件大小大概为50多M
例如:/dSYMs/Contents/Resources/DWARF/5.0【文件名为5.0】

二、清单2【开发】

1、crash_address.sh脚本【单个地址脚本】【必须】
2、crash_symbol.sh脚本【整个crash解析脚本】【必须】

三、步骤

1、新建文件夹crash
2、将清单1和清单2 拷贝到crash文件夹
3、确认清单
4、打开终端cd到crash文件夹
5、校验三个文件【.app(ipa解压)、.crash、.dSYM】的uuid,确保三个uuid一致。

(1)校验.app:

dwarfdump --uuid xx.app/xx (xx代表你的项目名)

(2)校验.dSYM:

dwarfdump --uuid xx.app.dSYM

(3)校验.crash:

crash文件内 Binary Images: 下面一行中 <> 内的地址就是该.crash文件的uuid(已去掉了分隔符“-”)
6、将原始.crash文件符号化:

(1) 获取symbolicatecrash工具

  • 打开终端输入以下命令:
find /Applications/Xcode.app -name symbolicatecrash -type f
  • 我找到的路径是:
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
  • 根据路径前往文件夹找到symbolicatecrash ,将其拷贝到crash文件夹

(2) 终端输入:

sh crash_symbol.sh crash文件 dSYM文件

(3) 若出现"No symbolic information found",检查一下三个文件的uuid是否一样

7、将项目崩溃地址符号化:

经过第6步得到的结果,crashlog.crash文件,打开后如果发现系统库已经显示具体代码符号,而我们的代码仍然是地址。
则需要将具体地址符号化:

(1) 终端输入:

sh crash_address.sh dSYMs内文件夹DWARF下的app 地址1 地址2

例如:

sh crash_address.sh 5.0 0x102e58000 0x00000001036113dc 

说明:5.0是dSYMs内文件夹DWARF下的app
得到结果:

-[QLWebViewController webView:shouldStartLoadWithRequest:navigationType:] (in 5.0) (QLWebViewController.m:0)

8、定位结束

参考链接:
1、对Crash文件,dSYM文件进行符号化
2、iOS中符号的那些事儿

----------------------------更新xcode13新版本的crash日志-----------------------------------------
新日志符号化脚本文件

新版本的crash日志

拿到的xcode13的crash日志,与之前的日志有所不同。如图所示:

杂乱无章,全选copy,json格式化后,如图所示

红框的地方就是我们app闪退的位置。
操作步骤如下:

1、与之前一样,将crash文件、dSYM文件、脚本文件放在同一个文件夹temp里

2、终端cd进入temp文件夹

3、执行脚本文件

sh crash_symbol_13.sh ***.dSYM文件绝对路径 输出绝对路径 crash文件

例如:

sh crash_symbol_13.sh /Users/admin/Desktop/temp/dSYMs/wechat.app.dSYM /Users/admin/Desktop/temp  /Users/admin/Desktop/temp/crash.crash

4、temp目录下,找到CrashLog.crash,打开,即可看到之前的"imageOffset": 507376等已符号化。

5、符号化结束

你可能感兴趣的:(iOS crash文件解析项目符号不显示解决方案【更新至Xcode13 iOS15新类型crash日志 imageOffset】)