iOS符号化crash文件

有很多第三方如bugly,fabric等都提供了crash分析的功能,且如果xcode登录了app的开发者账号也可能通过xcode->Window->Organizer->Crashes获取到苹果收集的crash信息,如果在应用提交时选择了上传符号文件,那么在这里直接可以看到已经符号化之后的日志。

image.png

其实原理都是一样的,就是通过dsym文件,借助xcode提供的sybolicatecrash将一堆地址转化为可读性代码字符串,另外要保证crash文件中的slice_uuiddysm文件匹配才行,可通过MachOView工具查看xxx.app.dysm->显示包内容->Contents->Resources->DWARF->xxx该文件中的Load_Commands->LC_UUID.

image.png

image.png

重点来了

为了方便,新建一个文件夹tmp,将xxx.app.dSYM放到文件夹

  • 在终端输入命令find /Applications/Xcode.app -name symbolicatecrash -type f查找symbolicatecrash的路径,可以看到将出输出多个路径/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/iOSSupport/Library/PrivateFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash /Applications/Xcode.app/Contents/Developer/Platforms/WatchSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash /Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
  • 找到SharedFrameworks路径下的symbolicatecrash并挎贝到tmp目录下,可以使用命令cp 原路径 tmp/symbolicatecrash
  • cd到tmp目录下
    ➜ tmp ./sybolicatecrash ./PiaoWuTong-2020-12-18-135255.ips ./PiaoWuTong.app.dSYM >crash.log符号化并输出结果到crash.log文件中。
  • 在第一次执行的时候会报错Error: "DEVELOPER_DIR" is not defined at ./sybolicatecrash line 69.,解决办法为在终端执行export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer,然后再次执行符号化命令即可。
    image.png
手机上查找crash文件,打开设置->隐私->分析与改进->分析数据,文件太多可以使用搜索,可以使用日期作为关键字如搜索2020-12-18

你可能感兴趣的:(iOS符号化crash文件)