iOS 使用 dSYM 文件解析crash日志

1、平常在开发的过程中,可能会有需要手动解析crash日志文件的情况,具体如何解析呢?

需要三个东西:

  • crash日志文件
  • 对应的dSYM文件
  • symbolicatecrash工具文件
2、找到解析工具symbolicatecrash

打开终端,输入 find /Applications/Xcode10.2.app -name symbolicatecrash -type f,我用的是Xcode10.2,返回的结果如下:

1
2
3
4
/Applications/Xcode10.2.app/Contents/Developer/Platforms/WatchSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
/Applications/Xcode10.2.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
/Applications/Xcode10.2.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
/Applications/Xcode10.2.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

直接找到最后一个,复制到一个文件夹

3、将dSYM文件和crash文件放到上面的文件夹里
4、检测dYSM文件和crash文件是否对应

dwarfdump --uuid xxx.app.dSYM

如果输出的uuid和crash文件中的一致,则可以解析出正确的crash文件。crash文件中的uuid位于Binary Images中的第一行尖括号内。

5、解析crash文件

./symbolicatecrash x.crash xxx.app.dSYM > crashLog.text

6、可能遇到的问题

第一次使用symbolicatecrash会产生一个error,如下的错误信息
Error: "DEVELOPER_DIR" is not defined at /usr/local/bin/symbolicatecrash line 53.
解决办法是在命令行输入:
export DEVELOPER_DIR='/Applications/Xcode10.2.app/Contents/Developer'