iOS Crash 符号化与分析

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 的位置对应的地址)

运行时堆栈地址(上图 3) = 运行时起始地址 + 偏移量

分析上图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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容