iOS-Crash文件符号化(symbolicatecrash)

简述

在我们测试或者公司测试人员测试app的时候,难免会遇到闪退的问题,这时候我们并不是将手机连接到Xcode进行调试,以致于具体的闪退信息无法追踪到,当然我们也可以继续连接到Xcode上进行问题重新,可不幸的是并不是每个问题都是能够如愿以偿的重现,还有就是当app已经上线了,我们更是无从得知哪里出问题了,这时候我们就需要将Crash文件找到,然而找到之后却是下面这样子,看不到具体是哪个方法哪个地方出现了什么样的问题,这时候我们就需要将这些看不懂的东西进行符号化(symbolicate)

Exception Type:  EXC_CRASH (SIGKILL)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Termination Reason: Namespace SPRINGBOARD, Code 0x8badf00d
Triggered by Thread:  0

Filtered syslog:
None found

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x000000018f6c0e64 0x18f6a2000 + 126564
1   libsystem_pthread.dylib         0x000000018f78cc5c 0x18f786000 + 27740
2   Clash of Clans                  0x000000010035d670 0x1000b4000 + 2791024
3   Clash of Clans                  0x0000000100191cc4 0x1000b4000 + 908484
4   Clash of Clans                  0x0000000100104ac4 0x1000b4000 + 330436
5   Clash of Clans                  0x0000000100343a6c 0x1000b4000 + 2685548
6   QuartzCore                      0x00000001938d6600 0x1938cc000 + 42496
7   QuartzCore                      0x00000001938d64b0 0x1938cc000 + 42160
8   IOKit                           0x0000000190933dd4 0x19092e000 + 24020
9   CoreFoundation                  0x000000019065d958 0x19059a000 + 801112
10  CoreFoundation                  0x0000000190675adc 0x19059a000 + 899804
11  CoreFoundation                  0x000000019067527c 0x19059a000 + 897660
12  CoreFoundation                  0x0000000190672d90 0x19059a000 + 888208
13  CoreFoundation                  0x00000001905a2d94 0x19059a000 + 36244
14  GraphicsServices                0x000000019200c074 0x192000000 + 49268
15  UIKit                           0x000000019685b130 0x1967e6000 + 479536
16  Clash of Clans                  0x0000000100348cb4 0x1000b4000 + 2706612
17  libdyld.dylib                   0x000000018f5b159c 0x18f5ad000 + 17820

那应该怎么做呢,有两种情况:闪退的app是不是在你本机进行打包的;

  • 本机: 那就可以直接用Xcode的Organizer中直接对Crash进行符号化
  • 非本机: symbolicatecrash 命令,dSYM文件

然而不管那种情况,我们都需要找到其crash的日志

  • 上线的app,则需要从Organizer中下载crash文件,当然需要用户的"诊断与用量"是"自动发送状态",你才能够下载到。
  • 正在新版本开发的app,需要从闪退的真机中的隐私中找到对应的crash日志。
  • 以前的版本是在"设置->隐私->诊断与用量->诊断与用量数据"中,现在变成了"设置->隐私->分析->分析数据"中,这些数据可以通过iTunes进行同步到Mac和Xcode上。

查找Crash文件

通过iTunes同步之后在相应的路径下查找Crash文件
Mac :

~/Library/Logs/CrashReporter/MobileDevice/

Windows :

C://Users//AppDataRoamingApple/ComputerLogsCrashReporterMobileDevice/

Xcode:

Xcode->Window->Devices->View Device Logs

如果同步机制无法同步出来或无法同步,直接在手机上进行复制粘贴,制作成Crash文件

隐私里面的crash日志

查找symbolicatecrash

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

查找dSYM

Xcode 8在organizer下download dSYMs...会出现问题:No dSYMs were found for Version ... Build ...
且在Archive的文件夹下也没有没有相应的文件,可以尝试

/Users/<username>/Library/Developer/Xcode/DerivedData/<appName-乱码>/Build/Intermediates/<appName>.build/Debug-iphoneos

或通过Spotlight查找dSYM

符号化

将找到的文件放到同一个目录文件夹下,打开终端执行以下命令

1、cd <目录>
2、export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer
3、./symbolicatecrash ./*.crash ./*.app.dSYM > symbol.crash

打开symbol.crash即可看到符号化后的Crash

参考:

更详细的步骤:
1、iOS调试之 crash log分析
2、Xcode崩溃日志分析工具symbolicatecrash用法
3、Understanding and Analyzing Application Crash Reports


作者:碟枫
链接:https://www.jianshu.com/p/20be45718af5

猜你喜欢

转载自blog.csdn.net/minggeqingchun/article/details/80076523