背景
在linux x86系统中,如果程序发生了crash,可以通过core dump生成core文件,然后gdb进行分析,这方面的资料很多。
在android环境中,native程序crash,该怎么办呢?也可以生成core文件,然后用安卓编译工具链里面的gdb等工具进行分析,这块可以参考:Android 下基于core文件分析crash信息
同时,当native程序崩溃时,安卓会在/data/tombstone目录下生成对应的tombstone文件,该文件提供了程序崩溃时的pid、tid、出错信号类型、线程堆栈信息等等,这些信息是我们解决crash的关键内容。
当然,上述crash信息也会在logcat中有记录,但是当你的环境中logcat因为某些原因没抓到、或者系统不小心死机后,上述crash信息就会丢失了,这时候持久化的tombstone文件提供了crash现场的目击者信息
所以,当安卓native程序crash时,可以通过logcat看crash信息、分析tombstone文件或用gdb分析core文件这几种手段去还原crash现场的信息,进一步分析问题所在
参考
关于tombstone的解析以及anroid提供的一些辅助工具(如addr2line等),已有很多不错的博文可以参考: