说一下我的看法,这种问题排查不要只从能否复现的角度处理,应该主要从两方面着手,1 是日志,2 是监控。
1 、app 程序层面的问题,分为普通异常日志和崩溃日志,一般来说异常类日志都有较完整的调用链信息,定位问题相对容易。但造成崩溃的原因比较多,可能是内存问题,用户设备问题、也可能只是某个参数校验失败或空指针异常处理不当导致的,不同情况下崩溃日志有可能完整也可能不完整。所以从日志层面上可以添加全局的异常信息捕获,并将全局异常日志上报,防止漏掉异常信息,而导致排查无从下手。
2 、app 的异常监控体系不完善,可以使用我的开源项目,快速搭建起异常监控体系,
https://github.com/xl-xueling/xl-lighthouse ,基于通用型流式统计实现,接入方便、使用灵活、性能强大,轻松实现任意细粒度、任意维度的数据监控。将手机型号、手机系统版本号、app 版本号、页面、模块、错误码等关键信息上报。全面监控各类异常的次数和频率等信息(我自己感觉我的开源项目是应对这类问题业内最强大的工具了~~)。
总之,我觉得 app 问题处理,侧重点应在两方面:一是全局异常日志(代表你没有正常处理的异常),二是普遍性错误(比如:某个 app 版本或某个机型错误率或崩溃率在 0.5%以上的异常),公司内部可以对异常阈值确定一个标准,比如灰度时发现影响超过 0.5%的用户的异常必须测试人员复测解决,该版本不能继续发布,而影响范围较小的偶发性问题、不容易复现的问题,可以暂时忽略或陆续解决。要做到应对领导的所有盘问一切以数据说话,只要日志和监控体系建立起来,你对线上故障的驾驭能力会得到极大的提升。