美文网首页
DSYMTools的使用

DSYMTools的使用

作者: 小冰山口 | 来源:发表于2019-10-14 12:05 被阅读0次

    本人有若干成套学习视频, 可试看! 可试看! 可试看, 重要的事情说三遍 包含Java, 数据结构与算法, iOS, 安卓, python, flutter等等, 如有需要, 联系微信tsaievan.

    有时候线上版本出现崩溃, 我们会使用bugly来捕获崩溃

    崩溃列表

    点开之后可以很方便地看到调用堆栈, 但这个并没有告诉我们崩溃究竟出现在哪里

    调用堆栈

    这时候, 我们就要使用DSYMTools这个工具
    下载地址

    什么是 dSYM文件

    Xcode编译项目后,我们会看到一个同名的 dSYM 文件
    dSYM 是保存 16 进制函数地址映射信息的中转文件

    我们调试的symbols都会包含在这个文件中,并且每次编译项目的时候都会生成一个新的 dSYM文件,位于/Users/<用户名>/Library/Developer/Xcode/Archives目录下,对于每一个发布版本我们都很有必要保存对应的Archives文件

    dSYM文件有什么作用

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

    如何将文件一一对应

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

    好了, 我们看看这个软件究竟怎么用:


    运行DSYMTools工具

    运行之后, 我们发现这个界面:

    DSYMTools工具界面

    这时候, 你要选中, 你打包的dSYM文件

    文件路径

    dSYM文件的UUIDappUUID, 以及最后bugly上的UUID要一致

    bugly上的UUID

    然后你只要填写默认的slide address和错误信息内存地址就可以了

    出错堆栈

    比如此时你想查看红色区域的出错位置:

    • 那么slide address就是0x0000000100a20000
    • 0x0000000100a20000转换成十进制, 即4305584128
    • 然后再加上旁边的偏移量+ 5258872, 即4305584128+ 5258872 = 4310843000
    • 最后, 将4310843000再转换成十六进制即可, 即0x100F23E78, 那么错误信息内存地址就填上0x100F23E78

    当所有信息都填好的时候, 点击分析按钮, 我们就可以知道可能错误的地方了,
    如果可能的话, 这个工具甚至可以告诉你出错发生在哪个文件的哪一行, 非常方便

    相关文章

      网友评论

          本文标题:DSYMTools的使用

          本文链接:https://www.haomeiwen.com/subject/vqtrmctx.html