在Android开发中,程序崩溃分三种情况:
未捕获的异常
ANR(Application Not Responding:应用程序不响应)
闪退(NDK程序引发错误)
JDK(Java Development Kit)
SDK(Software Development Kit)
NDK(Native Development Kit:原生开发工具,这里的原生,主要是指C语言)和SDK一样,都是用来给Android设备开发软件用的,但和SDK不同的是NDK所用语言是C,而SDK用的是Java,NDK开发的软件在Android的环境里是直接运行的,一般只能在特定的CPU指令集的机器上运行,而且C语言可以直接和硬件对话,一般用它开发驱动或底层应用,而SDK开发出的软件在Android上靠Dalvik虚拟机来运行,所以如果没有特殊的需求或要专门针对某个硬件去开发,那就SDK。
默认情况下,在Android中Activity的最长执行时间是5秒,BroadcastReceiver的最长执行时间是10秒
墓碑文件位于/data/tombstones/下
墓碑文件主要由以下几部分组成:
构建指纹
崩溃的过程和PID
终止信号和故障地址
CPU寄存器
调用堆栈
堆叠每个对话的内容
我们主要是分析崩溃的过程和PID,终止的信号,故障地址和调用堆栈部分
SIGSEGV 内存引用无效
SIGBUS 访问内存对象的未定义部分
SIGFPE 算术运算错误,比如除以零
SIGILL 非法的指令
SIGSYS 糟糕的系统调用
SIGXCPU 超过CPU时间限制
SIGXFSZ 文件大小限制