iOS crash解析
2018-02-26 本文已影响52人
PursueDream
查看uuid
查看dSYM文件的uuid
xcrun dwarfdump --uuid *.dSYM
查看app的uuid
xcrun dwarfdump --uuid *.app/*
查看crash文件的uuid
在crash文件中找到Binary Images:,其下面的第一行类似于下面代码
0x102e80000 - 0x10393ffff test arm64 <9f95e773509e32d2802b336adfbb6794> /var/containers/Bundle/Application/DFD0CD37-F4A6-4F4E-BA1D-638FC53F1C31/test.app/test
尖括号中的就是uuid
debug生成dSYM文件
XCode Release编译默认会生成dSYM文件,而Debug编译默认不会生成,对应的Xcode配置如下:
XCode -> Build Settings -> Code Generation -> Generate Debug Symbols -> Yes
XCode -> Build Settings -> Build Option -> Debug Information Format -> DWARF with dSYM File
配置symbolicatecrash
通过下面命令行查找symbolicatecrash路径
find /Applications/Xcode.app -name symbolicatecrash -type f
在输出找到中的symbolicatecrash命令
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
然后执行下面命令,将symbolicatecrash拷贝到目录/usr/bin/下面
sudo cp /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash /usr/bin/symbolicatecrash
执行上面命令有时会报错提示没有权限,这时候通过csrutil status命令查看是否是开启了SIP(System Integrity Protection),一般会在OSX 10.11以后版本遇到
输入csrutil status命令后,会输出
System Integrity Protection status: disabled
status为enable表示开启了SIP,disabled表示关闭了。
如果开启了SIP怎么关闭呢?
首先重启电脑,在启动过程中同时按住command和加号键进入恢复模式,进入后可能会让你选择语言。进入恢复模式后,在里面选择“实用工具”进入“终端”,输入csrutil disable命令即可关闭,然后重新启动电脑。
重新将symbolicatecrash拷贝到/usr/bin下
在~/.bash_profile文件中加入
export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"
并执行source ~/.bash_profile让更改立马生效
符号化crash文件
symbolicatecrash test.dSYM test.app/test > symbol.crash