一般做项目的时候会碰到一些崩溃的情况。在非调试模式下没有办法判断崩溃在哪里,只能通过崩溃日志来分析,如果崩溃日志在没有符号化的情况下,都是显示的一些内存信息,这样我们就很难找到崩溃的原因。碰到这样的情况我一般都用Xcode
自己带的工具来符号化崩溃日志。
准备工具
- Xcode
- dsym文件,应用安装包,崩溃日志
- 分析工具
symbolicatecrash
- 命令行工具
符号化崩溃日志
- 从设备里面导出崩溃日志
设备连接Xcode
,打开菜单Window->Device
(快捷键shift+command+2)选项,选中当前设备,点击View ``Device Logs
。如下图所示:
点击以后会出来当前设备的崩溃日志列表。默然选中的就是This Device
(当前设备的崩溃日志),可以根据Date/Time
找出崩溃的日志,然后在崩溃日志选项右键选择Export Log
导出当前的崩溃日志到指定的文件夹。
- 导出dsym、应用安装包。
每次Archive成功,都会有对应的Archive文件生成,文件得路径是/Users/用户名/Library/Developer/Xcode/Archives/
目录下。找到对应的文件,打开就会看见对应的Archive文件,右键点击该项目,然后点击显示包内容,就会看到对应的文件夹。dSYMs
、Products
这两个文件夹里面的内容是我们所需要的。分别打开两个文件夹,找到对应的.dSYM
和.app
文件,把这两个文件跟上一步导出的崩溃日志放在同一个文件夹中。
- 符号化工具(symbolicatecrash)
本人用的是Xcode8,工具路径是/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
如果路径错误的话可以尝试这个路径:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash
找到对应的工具 可以复制一份放到桌面上下次方便使用。
- 打开终端(Terminal)
在终端里面打开步骤2中保存崩溃文件夹的路径,然后输入export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
然后处理命令行 /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash appName.app appName.crash > appName.log
然后符号化后的文件就在当前的文件夹中。