iOS Crash 符号化与分析
2019-05-10 本文已影响17人
ocarol
iOS Crash 符号化与分析
1.crash文件与dSYM文件的UUID
-
crash文件的UUID
Binary Images: 下面一行
image.png -
dSYM文件的UUID
dwarfdump --uuid XXX.app.dSYM
2.自动符号化crash文件
-
应用场景
crash
文件 与dSYM
文件UUID
一致的时候 -
步骤:
-
在桌面创建一个crash文件夹。
-
将dSYM文件、symbolicatecrash工具、crash文件拷贝到crash文件夹下。
-
执行命令解析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