ios 解析APP出现闪退,解析.crash文件

1,299 阅读2分钟

1.桌面创建一个文件夹,命名crash;

2.将.ips文件更名为.crash文件并放到crash文件夹中;

3.前往文件夹路径拿到symbolicatecrash

    /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources
    

WeChat8d01a082c97d27d1e22c84d1b5c60607.png

4. 找到.dSYM 符号文件

  • 我们在所需的环境下进行项目 Product - Archive ,弹出的 Organizer 窗口中会显示刚生成的Archive版本。 (每个Archive版本有一个与之对应的 .xcarchive文件),右键选中所需要的Archive版本,并选择 Show In Finder 

11.png

  • 找到与之对应的 .xcarchive文件,右键显示包内容并进入

22.png

  • 此时,如果上面配置正确那么文件夹中就存在 dSYMs 文件夹

33.png

  • 点击进入,这样找到了对应的 appName.app.dSYM 文件

44.png

5.复制xxx.app.dSYM文件粘贴到crash文件夹中

11.png

6.打开终端输入命令:cd进入到桌面当前crash文件夹中

7.输入命令 export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer

8.依次文件直接拉入到终端,最后输出 ->2.txt

WeChatbf85554ed4bc7c342907b52ace331173.png

9.如图

WeChatc6ae869cbb417dee93b1f9b76f04f1ec.png

扩展

什么是 dSYM 文件

Xcode编译项目后,我们会看到一个同名的 dSYM 文件,dSYM 是保存 16 进制函数地址映射信息的中转文件,我们调试的 symbols 都会包含在这个文件中,并且每次编译项目的时候都会生成一个新的 dSYM 文件,位于/Users/<用户名>/Library/Developer/Xcode/Archives目录下,对于每一个发布版本我们都很有必要保存对应的 Archives 文件 (AUTOMATICALLY SAVE THE DSYM FILES这篇文章介绍了通过脚本每次编译后都自动保存 dSYM 文件)。

dSYM 文件有什么作用

当我们软件 release 模式打包或上线后,不会像我们在 Xcode 中那样直观的看到用崩溃的错误,这个时候我们就需要分析 crash report 文件了,iOS设备中会有日志文件保存我们每个应用出错的函数内存地址,通过 Xcode 的 Organizer 可以将 iOS 设备中的 DeviceLog 导出成 crash 文件,这个时候我们就可以通过出错的函数地址去查询 dSYM 文件中程序对应的函数名和文件名。大前提是我们需要有软件版本对应的 dSYM 文件,这也是为什么我们很有必要保存每个发布版本的 Archives 文件了。 借鉴于:www.jianshu.com/p/86e992932…