iOS crash解析

作者: PursueDream | 来源:发表于2018-02-26 19:42 被阅读52次

    查看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
    

    相关文章

      网友评论

        本文标题:iOS crash解析

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