工作了这么久,但是还是没有好好的处理一下线上的Crash以及用户手机的Crash,正好公司要求,然后今天处理一下,做个记录
我们公司使用的是友盟的Crash统计,今天就说说如何通过友盟找出线上的Crash.
估计其他的也都如此,不在赘述:
需要的东西:
1.Crash的文件(在友盟后台,他们默认将Crash放到了execel表中)
2.dYSM文件(Crash版本必须使用对应包的dYSM文件,否则不成功)
3.友盟的
umcrashtool
工具
具体实施:
1.获取Crash的文件
图1.友盟的后台获取Crash文档
图2.奔溃日志列表
图3.友盟错误详情,但是全都是内存地址,看不懂
2.获取dYSM文件
这个一定要使用对应Crash的版本,切记
图4.在包列表中找到对应的版本
图5.找到.xcarchive结尾的,右键显示包内容
图6.拷贝.dSYM文件
目标位置:~/Library/Developer/Xcode/
图7.放置完毕效果图
3.设置友盟的umcrashtool工具
图8.友盟工具获取的地址
图9.将友盟工具和Crash日志文件放到桌面的文件夹中
图10.拖工具和execl表到命令行,然后回车,符号化日志,获取结果 友盟的日志要重上往下读,应为有start,end
剩下的就是自己看这个然后获取具体的bug信息,查找问题了
其他
刚才说的,是使用友盟的东西,但是如果说用户使用了我们的app,但是我们没使用其他第三方工具手机Crash日志,怎么办?
这里就不得不说说如何手机Crash日志的方法了:
1.通过用户的手机获取
2.通过Xcode获取
3.通过iTunsConnect
iOS设备上的应用闪退时, 操作系统会声称一个崩溃日志, 保存在设备上。
路径是: 设置 -> 隐私 ->诊断与用量 ->诊断与用量数据。在这里可以看到设备上所有的设备崩溃日志.
1.连接设备获取崩溃日志
设备与电脑上的ITunes Store同步后, 会将崩溃日志保存在电脑上,崩溃日志保存在以下位置:
设备与电脑上的iTunes Store同步后,会将崩溃日志保存在电脑上。根据电脑操作系统的不同,崩溃日志将保存在以下位置: Mac OS X:~/Library/Logs/CrashReporter/MobileDevice/ Windows XP: C:Documents and Settings<USERNAME>Application DataApple ComputerLogsCrashReporterMobileDevice<DEVICE_NAME>Windows Vista or 7: C:Users<USERNAME>AppDataRoamingApple ComputerLogsCrashReporterMobileDevice<DEVICE_NAME>
图11.方法一.手机上的奔溃
图12.手机链接完电脑,通过特定上边写的路径,获取到的文件们 找到对应的奔溃日志,给我们
如果用户和你关系很好,要是发送了Crash,你可以要求他发松这个文件给你,然后查找问题
2.Xcode获取
图13.方法二.Xcode查找奔溃日志
图14.Xcode看到的日志
3.iTunesConnect获取
图15.方法三.iTunesConnect查找奔溃日志
但是这个有的时候不好使,不一定及时更新,用户不开始上报,白扯
图16.Bug产生的原因
图17.Crash日志都是16进制保存的,我们要去给他”符号化“
图18.符号化所需要的东西
图19.符号化完毕的东西,从后面往前读
图20.符号化的图
图21.未符号化的Crash日志,主要看看各部分的含义
(1) 进程信息 第一部分是闪退进程的相关信息。Incident Identifier是崩溃报告的唯一标识符。CrashReporter Key 是与设备标识相对应的唯一键值。虽然它不是真正的设备标识符,但也是一个非常有用的情报:如果你看到100个崩溃日志的CrashReporter Key值都是相同的,或者只有少数几个不同的CrashReport值,说明这不是一个普遍的问题,只发生在一个或少数几个设备上。Hardware Model 标识设备类型。 如果很多崩溃日志都是来自相同的设备类型,说明应用只在某特定类型的设备上有问题。上面的日志里,崩溃日志产生的设备是iPhone 4s。Process 是应用名称。中括号里面的数字是闪退时应用的进程ID。 (2) 基本信息 这部分给出了一些基本信息,包括闪退发生的日期和时间,设备的iOS版本。如果有很多崩溃日志都来自iOS 6.0,说明问题只发生在iOS 6.0上。 (3) 异常 在这部分,你可以看到闪退发生时抛出的异常类型。还能看到异常编码和抛出异常的线程。根据崩溃报告类型的不同,在这部分你还能看到一些另外的信息。 (4) 线程回溯 这部分提供应用中所有线程的回溯日志。 回溯是闪退发生时所有活动帧清单。它包含闪退发生时调用函数的清单。 (5) 线程状态 这部分是闪退时寄存器中的值。一般不需要这部分的信息,因为回溯部分的信息已经足够让你找出问题所在。 (6) 二进制映像 这部分列出了闪退时已经加载的二进制文件。
作者:王鑫20111
链接:https://www.jianshu.com/p/e220dd11bab8