美文网首页iOS备忘录
iOS Crash 符号化与分析

iOS Crash 符号化与分析

作者: ocarol | 来源:发表于2019-05-10 18:54 被阅读17次

    iOS Crash 符号化与分析

    1.crash文件与dSYM文件的UUID

    • crash文件的UUID
      Binary Images: 下面一行


      image.png
    • dSYM文件的UUID

    dwarfdump --uuid XXX.app.dSYM
    

    2.自动符号化crash文件

    • 应用场景
      crash 文件 与 dSYM 文件 UUID 一致的时候

    • 步骤:

    1. 在桌面创建一个crash文件夹。

    2. 将dSYM文件、symbolicatecrash工具、crash文件拷贝到crash文件夹下。

    3. 执行命令解析crash文件。

      ./symbolicatecrash ./*.crash ./*.app.dSYM > symbol.crash
      

    symbol.crash文件就是解析后的crash文件。

    • 可能遇到的问题:

    问题一:Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69.

    解决方法:终端执行下面的命令设置环境变量。

    export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer
    

    3.手动符号化crash单行地址

    • 应用场景
      crash 文件 与 dSYM 文件 UUID 不一致的时候,但是代码变化不是很大
    • 步骤
      先看crash文件,如下图:


      image.png

    需要使用的终端命令:

    atos -o Your.app.dSYM/Contents/Resources/DWARF/Your -arc [CPU架构] -l [load Address] [address]
    
    loadAddress: 是运行时起始地址, 在 + 号前面(上图2的位置对应的地址)
    address: 运行时堆栈地址, (上图1的位置对应的地址)
    
    运行时堆栈地址 = 运行时起始地址 + 偏移量
    

    分析上图crash文件的命令是:

    atos -o /Users/yulili/Downloads/crash/HexaJigsaw-mobile.app.dSYM//Contents/Resources/DWARF/HexaJigsaw-mobile -arch arm64 -l 0x102ff8000 0x00000001038b7ec4
    

    参考文章:

    https://www.jianshu.com/p/2493f6f3db6d
    https://www.jianshu.com/p/5ab21d6c0c22

    相关文章

      网友评论

        本文标题:iOS Crash 符号化与分析

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