Xcode崩溃日志分析工具symbolicatecrash用法

作者: 00after | 来源:发表于2018-07-25 14:53 被阅读63次

    什么是symbolicatecrash


    symbolicatecrash是Xcode自带的一个分析工具,可以通过机器上的崩溃日志和应用的.dSYM文件定位发生崩溃的位置,把crash日志中的一堆地址替换成代码相应位置。

    为什么要用symbolicatecrash


    开发者调试错误只需要有真机,并且连接到xcode上,就可以跟踪发现错了。
    但是如果你的APP不是安装在你自己的真机上,比如你的APP发布到App Store(客户下载后你如何跟踪你的APP在他们的机器上?)这时候就要用到symbolicatecrash。
    当一款APP软件在IOS设备上崩溃的时候,一份“crash report”将会自动创建并且存储在设备上。crash report描述了APP崩溃的日志。在大多数情况下,包括对每个线程执行一个完整的堆栈跟踪,查看该日志对于APP崩溃调试非常有用。

    如何查看iphone上的崩溃日志


    // ios8之前
    设置
    通用
    关于本机
    诊断与用量
    诊断与用量数据

    // iOS 8
    设置
    隐私
    诊断与用量
    诊断与用量数据

    如何同步设备日志到我们的mac上


    如果是其他用户并且是APP Store下的APP
    需要用户在'如何查看iphone上的崩溃日志'中,将《自动发送》开启,打开《与应用开发者共享》,这样用户的APP崩溃后,会提示发送崩溃日志到开发者,开发者就可以在iTunes Connect中下载这些崩溃日志。
    如果是手中的真机
    直接将IPHONE连接到iTunes,打开xcode->window->devices,导出你需要的崩溃日志即可

    查看崩溃日志


    查看崩溃日志.jpg

    1、 进程信息
    第一部分是闪退进程的相关信息。

    Incident Identifier : 是崩溃报告的唯一标识符。

    CrashReporter Key: 是与设备标识相对应的唯一键值。虽然它不是真正的设备标识符,但也是一个非常有用的情报:如果你看到100个崩溃日志的CrashReporter Key值都是相同的,或者只有少数几个不同的CrashReport值,说明这不是一个普遍的问题,只发生在一个或少数几个设备上。

    Hardware Model :标识设备类型。 如果很多崩溃日志都是来自相同的设备类型,说明应用只在某特定类型的设备上有问题。上面的日志里,崩溃日志产生的设备是iPhone 4s。

    接下来几行不言自明,无需赘述。

    (2) 基本信息
    这部分给出了一些基本信息,包括闪退发生的日期和时间,设备的iOS版本。
    (3) 异常
    Exception Type:异常的类型。
    Exception Codes :异常错误码
    Termination Reason:闪退的原因,比如常见的数组越界啊,什么的。
    Triggered by Thread:出现问题在哪个线程,这个比较重要,首先确定在哪个线程中出了问题,然后再去定位。

    (4) 线程回溯
    这部分提供应用中所有线程的回溯日志。 线程调用的一些,堆栈信息,压根看不懂,所有需要进行符号化处理。

    如何使用symbolicatecrash分析崩溃日志


    Step 1:在你的MAC桌面创建一个新文件夹,并且命名为"CrashReport"

    Step 2:打开前往应用程序,找到 Xcode 应用程序, 右击它选中 "显示包内容" ,之后根据下面提供的路径

    Xcode6.0之前:
    "Contents->Developer->Platforms->iPhoneOS.platform->Developer->Library->PrivateFrameworks->DTDeviceKit.framework->Versions->A->Resources"

    OR

    "Contents->Developer->Platforms->iPhoneOS.platform->Developer->Library->PrivateFrameworks->DTDeviceKitBase.framework->Versions->A->Resources"

    Xcode6.0之后
    改成 "Contents/SharedFrameworks"

    实在找不到可以打开终端输入 :

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

    然后终端会返回这个文件的路径

    只要找到"symbolicatecrash" 文件, 复制然后粘贴到刚才创建的 "CrashReport" 文件夹里面.

    Step 3: 从Xcode Archive的二进制文件中找到.dSYM文件和.app文件拷贝到刚才创建的 "CrashReport" 文件夹里面.

    1. 在桌面创建一个crash文件夹,然后Xcode->Window->Organizer找到Archives找到App->右击Show in Finder
    2. 复制.app和.app.dSYM到crash夹文件:右击.xcarchive文件->显示包内容
      dSYMs文件夹中找到
      .app.dSYM
      Products->Applications文件夹中找到*.app

    Step 4:打开终端进入CrashReport文件夹,依次输入以下命令行:

    1.打开终端用命令切换到桌面的CrashReport目录下:

    cd /Users/username/Desktop/CrashReport
    

    2.执行命令

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

    3.执行命令

    ./symbolicatecrash ./*.crash ./*.app.dSYM > symbol.crash
    

    这时候终端将会进行处理......
    处理结果是生成一个新的文件symbol.crash。然后打开这个文件。
    你就会看到日志跟我们调试APP的控制台输出的内容一样了!

    have fun


    参考文章:
    Xcode崩溃日志分析工具symbolicatecrash用法
    使用Xcode自带工具symbolicatecrash解析iOS Crash文件
    iOS崩溃调试的使用和技巧总结
    iOS--Crash日志的分析
    ios crash的原因与抓取crash日志的方法

    相关文章

      网友评论

        本文标题:Xcode崩溃日志分析工具symbolicatecrash用法

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