啄木鸟

一、概述

啄木鸟,为移动开发者提供线上质量监控以及异常定位分析服务。

只要接入UC自主研发的crashSDK,便能方便的跟踪线上异常,高效定位问题,快速解决问题。

二、啄木鸟SDK,一款功能强大的崩溃日志SDK

啄木鸟SDK有着极高的崩溃收集率,生成的日志中包含了很多有利于分析和解决问题的重要信息:

当应用发生异常事件或signal退出均能被啄木鸟SDK检测到。

尤其对于Android除了覆盖到通常意义下的 java 和 native 等可捕获到的崩溃以外,有大量的崩溃是被系统强行杀掉,不论是 java 的异常机制还是 native 的信号处理机制都不能捕获到,针对这类情况,CrashSDK 定义为 unexp,能达到近100%覆盖。

即便针对可捕获的 java 或者 native 崩溃,在崩溃日志生成过程中也可能会在一些极端情况下,无法生成崩溃日志导致统计不到这部分的崩溃。例如文件句柄泄露导致日志生成失败、栈溢出导致日志生成失败、堆内存耗尽导致日志生成失败等等

啄木鸟SDK 经过多年的技术积累,此部分考虑到的细节非常多,每一个失败路径或者二次崩溃场景都会有相应的信息输出到日志中,可定位 SDK 自身的问题及持续优化。

崩溃日志中最为核心的内容就是 java 崩溃中的 java 栈,以及 native 崩溃中的native 栈以及对应的 java 栈,有些特定情况(如二次崩溃或异常等)或者不同 ROM 下可能会出现栈获取不到或者获取不完整的情况,为分析解决问题带来很大困难。针对该内容类的获取率,啄木鸟SDK 也做了很多细节优化,综合获取成功率能达到90%左右。

另外,啄木鸟SDK native 崩溃日志的生成,做了子进程保护机制,在出现二次崩溃后,仍然可以获取更多其它内容。

日志生成成功后,保证日志上传环节的成功率也是非常重要的一环,否则还是会造成日志丢失的情况。典型场景是如何保证二次崩溃导致上传失败,以及启动崩溃的上传问题。

啄木鸟SDK 为了保障上传成功率,上传时机做了调整,非启动崩溃,可在 APP 下次启动后再上传,这个时候 APP 的运行环境通常比较健康,成功率非常高(99.9%+)。这个时机上传会导致稳定的启动崩溃的日志丢失(在上传之前稳定崩溃),针对该场景我们做了特殊优化,将这类日志在独立的后台进程实时上传,以保证所有日志都不被丢失。

自动记录按钮点击事件;上层可根据需要随时添加行为记录,在上报崩溃日志同时上报行为记录,帮助定位线上问题

啄木鸟异常分析定位服务,助力开发者高效解决问题

local image