4.dYSM是如何分析的?

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

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

  • 如何将文件一一对应
    每个xx.appxx.app.dSYM文件都有对应的UUID,crash文件有自己的UUID,只要这三个文件的UUID一致,我们就可以通过他们解析出来正确的错误函数信息了.

    1.查看xx.app文件中的UUIS在terminal中输入命令:dwarfdump --uuid xx.app/xx(xx代表你的项目名称)

    2.查看xx.app.dSYM文件中的UUID在terminal中输入命令:dwarfdump --uuid xx.app.dSYM

    3.crash文件内第一行Incident Indetifier 就是该crash文件的UUID.

  • dSYM工具


    图片.png

使用步骤:
1.讲打包发布软件是的xcarchive文件拖入软件窗口的任意位置(支持多个文件同事拖入,注意:文件名不能包含空格)
2.选中任意一个版本的xcarhive文件,右边会列出该xcarhive文件支持的CPU类型,选中错误对应的CPU类型
3.对比错误给出的UUID和工具界面给出的UUID是否一致
4.讲错误地址输入工具文本框中,点击分析

你可能感兴趣的:(4.dYSM是如何分析的?)