啄木鸟,为移动开发者提供线上质量监控以及异常定位分析服务。
只要接入UC自主研发的crashSDK,便能方便的跟踪线上异常,高效定位问题,快速解决问题。
啄木鸟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%+)。这个时机上传会导致稳定的启动崩溃的日志丢失(在上传之前稳定崩溃),针对该场景我们做了特殊优化,将这类日志在独立的后台进程实时上传,以保证所有日志都不被丢失。
自动记录按钮点击事件;上层可根据需要随时添加行为记录,在上报崩溃日志同时上报行为记录,帮助定位线上问题
问题分类更清晰、合理,让真正的问题都暴露无遗;
自定义条件查询,按需组合,可随心所欲,查询特定类型问题;
丰富的日志信息,出错堆栈信息,详细的运行时数据,用户行为日志,多方面的信息协助定位问题;
多纬“分析”,可按不同维度多次聚合,分析崩溃原因更轻松;
整合了 UC 多年分析和解决崩溃问题的经验,更易于定位和解决问题;