zoukankan      html  css  js  c++  java
  • iOS解析crash日志:

    iOS解析crash日志:
    我们在ios开发中会碰到的很多crash问题,如果Debug调试模式的话,我们可以往往很容易的根据log的输出定位到导致crash的原因,但对于已经上线的应用,或者是release环境包导致的crash,我们就需要一些特殊的手段来通过crash log进行分析定位了。

    1.导出crash log

    将产生崩溃的设备连接到PC,打开iTunes, 等待iTunes同步Crash日志完成;

    Mac机器打开Finder,进入~/Library/Logs/CrashReporter/MobileDevice目录找到对应设备的crash日志并复制到crash文件夹里

    2.找到对应的app文件

    找到当前iphone设备上安装的ipa文件,更改文件后缀名为zip,解压后得到Payload文件夹,你需要的app文件就在其中了,放到crash文件里面。

    3.找到对应build版本的dSYM文件

    Xcode7以后打包的完成的时候会跳到下面的页面,右键show in finder

    会出现.xcarchive文件,右键显示包内容会到下面的页面:

    同样复制到crash文件里。

    4.确定dSYM、app以及crash文件的关系

    每一个xx.app, xxx.app.dSYM文件都拥有相应的uuid,crash文件也有uuid,只有三者uuid一至才表明之三者可以解析出正确的日志文件。
    查看xx.app文件的uuid的方法,在terminal中输入命令:

    查看xx.app文件的uuid的方法,在terminal中输入命令:
    dwarfdump --uuid xxx.app/xxx (xxx工程名)
    查看xx.app.dSYM文件的uuid的方法,在terminal中输入命令:
    dwarfdump --uuid xxx.app.dSYM (xxx工程名)
    而.crash的uuid位于,crash日志中的Binary Images:中的第一行尖括号内。如:
    armv7 <8bdeaf1a0b233ac199728c2a0ebb4165>
    5.通过symbolicatecrash分析crash文件

    symbolicatecrash是一个隐藏工具,它在我的Mac中的具体路径如下(Xcode7.3app请换成你的Xcode名称)

    /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
    或者输入密令:

    find /Applications/Xcode.app -name symbolicatecrash -type f
    把这个路径拷贝一下,然后粘到Finder的“前往文件夹”下,前往,就可以看到symbolicatecrash工具了,现在把它也拷到桌面的crash文件夹里。至此,crash文件夹里现在有4个文件了,分别是.app, .crash, .dSYM, symbolicatecrash。接下来就是用终端敲命令,生成更易分析的crash。
    首先用cd命令进入到crash文件夹下,然后输入以下命令
    ./symbolicatecrash /Users/xxxx/Desktop/crash/InOrder.crash /Users/xxxx/Desktop/crash/InOrder.app.dSYM > Control_symbol.crash
    上述命令中,"xxxx"和"InOrder"请自行替换成(电脑名字)和(文件)的名称。运行,这时候终端可能会报错Error: "DEVELOPER_DIR" is not defined at /usr/local/bin/symbolicatecrash line 53. 这时候在终端中再输入如下(Xcode.app依然是要替换成实际名称)
    export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer”
    然后再跑一下刚刚的那个命令./symbolicatecrash /Users/xxxx/Desktop/crash/InOrder.crash /Users/xxxx/Desktop/crash/InOrder.app.dSYM > Control_symbol.crash
    ,这时候看一下桌面的crash文件夹下就会多出一个名为“Control_symbol.crash”的文件,这就是可定位问题的crash文件了,我们打开看一下。

  • 相关阅读:
    从对比学习(Contrastive Learning)到对比聚类(Contrastive Clustering)
    国际学术会议英文口头报告(Oral presentation)常用语句
    物以类聚人以群分:聚类分析的一些挑战和进展
    多视图子空间聚类/表示学习(Multi-view Subspace Clustering/Representation Learning)
    关于“Unsupervised Deep Embedding for Clustering Analysis”的优化问题
    【Swift】TableView显示多列数据,锁定第一列位置
    【Swift】 WKWebView https 加载不受信任的站点
    【Swift】Starscream 实现socket连接
    【Swift】GRDB数据库本地存储聊天记录
    【Swift/Objective-c】公司项目优化(二)
  • 原文地址:https://www.cnblogs.com/huiyi-520/p/5673197.html
Copyright © 2011-2022 走看看