美文网首页
解析奔溃日志.ips

解析奔溃日志.ips

作者: RocketsChen | 来源:发表于2018-12-28 18:28 被阅读34次

    有的时候线上版本会出现隐性Bug并且debug不能大概率复现,造成难以断点调试。这个时候测试会丢过来一个.ips的文件包,需要手动定位。

    崩溃日志

    准备动作

    • .ips文件后缀改成.crash

    • 发布版本的.app.dSYM文件。一定要是你产生报错日志的版本。获取方式:Window -> Organizer 找到你发包版本 右键 show in Finder 。.xcarchive文件下显示包内容 dSYMs -> 获取。

    路径
    • 新建的一个文件夹例如:Crash。将xxx.app.dSYM.crash放入新建的文件夹中。

    打开终端

    1:先获取symbolicatecrash工具,

    去如下路径/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash去复制symbolicatecrash到crash文件夹内。这个时候你crash文件夹内有三个文件如下图:
    15459741693652.jpg

    2:终端命令解析

    • cd到你的创建的crash文件夹

    • ./symbolicatecrash ./xxx.crash ./xxx.app.dSYM > log.crash (symbolicatecrash路径 空格 .crash路径 空格 .app.dSYM路径 输出log的crash格式文件)

    可能会出现如下错误:Error: "DEVELOPER_DIR" is not defined at /Users/snailchen/Desktop/crash/symbolicatecrash line 69.

    • xcode-select -print-path 检查一下:如果不是/Applications/Xcode.app/Contents/Developer/则输入export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer

    • 验证xcode-select -print-path

    验证
    • 重复步骤2,会新生成一个log.crash文件

    3:打开后就是一些堆栈的日志

    这里我就不分析一些常见的bug了有兴趣的可以去Google/Baidu一下:Watchdog timeoutUser force-quitLow Memory termination等等
    日志

    如上图可以定位到如下,可以看出这个错误,上面只给出了一个内容地址,连大概的错误原因都没有,一般情况下如果是数组越界,空值等等会显示一个基本提示。但是就算如此也是不够的,我们需要进一步定位。

    12  xxxx                        0x00000001001a20fc 0x100070000 + 1253628
    13  xxxx                        0x00000001003fe9b0 0x100070000 + 3729840
    14  xxxx                        0x00000001004ced48 0x100070000 + 4582728
    15  xxxx                        0x00000001005e6608 0x100070000 + 5727752
    

    进一步定位

    前往至发布版本的dSYMs文件夹下,显示包内容

    路径
    我们 cd 到该文件目录下
    atos -arch arm64 -o xxxx 0x100070000 (xxxx:为你APP即如上图的SDKTest)
    
    这样就定位到项目中的具体报错了 : 的.m 文件的69行。
    定位

    3:赶紧去解Bug吧。

    相关文章

      网友评论

          本文标题:解析奔溃日志.ips

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