从安卓 APP 开发的角度,Java 崩溃捕获相对比较容易,JVM 给 Java 字节码提供了一个受控的运行环境,同时也提供了完善的 Java 崩溃捕获机制。Native 崩溃的捕获和处理相对比较困难,安卓系统的==debuggerd 守护进程会为 native 崩溃自动生成详细的崩溃描述文件(tombstone)。==
在==开发调试阶段,可以通过系统提供的 bugreport 工具获取 tombstone 文件==(或者将设备 root 后也可以拿到)。但是对于发布到线上的安卓 APP,如何获取 tombstone 文件,安卓操作系统本身并没有提供这样的功能。这个问题一直是安卓 native 崩溃分析和移动端 APM 系统的痛点之一。
https://source.android.com/devices/tech/debug/native-crash
https://source.android.com/devices/tech/debug/index.html#debuggerd
Before Android 8.0, crashes were handled by the debuggerd and debuggerd64 daemons. In Android 8.0 and higher, crash_dump32 and crash_dump64 are spawned as needed.