美文网首页
crash 分析

crash 分析

作者: 资源的搬运工 | 来源:发表于2019-11-28 16:53 被阅读0次

    工作中碰到crash是家常便饭,但怎么去分析crash,吃好这顿饭呢,我根据一些资料和自己的实践总结了下。

    平时我们拿到的崩溃都是没有符号化的,都是二进制地址,如下图,我们要做的就是把它符号化,找到对应的崩溃代码。

    符号化分两种情况,有发生崩溃的设备和没有设备的情况。

    1、有设备

    把设备接入电脑,在xcode->window->device and simulators->device->view device logs查到对应的崩溃日志,xcode会自动给你符号化,但可能符号话的效果没那么好,看下图

    2、没有设备

    没有设备的话,有两种方式去分析

    i. 使用mac自带的symbolicatecrash工具

    ii. 使用atos

    下边分别讲下

    i.使用mac自带的symbolicatecrash工具

    a.找到symbolicatecrash的目录,执行命令

    find /Applications/Xcode.app -name symbolicatecrash -type f

    使用真机下的symbolicatecrash,即图中红框里的。

    b. 拿到dSYM文件,这里保存着app的符号表,把dSYM文件和crash文件放到一个文件夹下,

    首先需要确认crash文件和dSYM文件是同一个UUID的

    查看dSYM文件的UUID如下

    dwarfdump --uuid mtmap.app.dSYM 

    查看crash文件的UUID,crash文件是设备的,只有一个arm架构

    grep "mtmap arm64" *crash

    配置环境变量

    临时方案

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

    永久方案

    编辑 ~/.bash_profile(笔者用的是 zsh,所以这里编辑的是 ~/.zshrc),在末尾添加

    # Add environment variable DEVELOPER_DIR  export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer 

    配置好环境后,执行命令

    /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash  ./*.crash ./*.app.dSYM > symbol.crash

    ii. atos方式

    atos需要dSYM文件和crash的地址。命令为

    xcrun atos -arch 架构 -o 二进制包 -l 模块load地址(基地址) 调用方法的地址

    作者:不会唱歌的程序员不是好厨师

    链接:https://www.jianshu.com/p/e2331a1ed62c

    来源:简书

    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    相关文章

      网友评论

          本文标题:crash 分析

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