Android 异常分析过程
Android 异常分析过程
获取异常的 ANR 或者 tombstones 文件。
ANR文件路径:/data/anr
TombStones路径:/data/tombstones
需要root权限才能直接访问获取,否则提示 Permission denied 。
adb 提供 bugreport 命令来解决这个问题。获取到压缩包后,在 FS/data下分别有anr和tombstones文件夹,里面便是对应文件。
1 | adb bugreport E:\Reports\MyBugReports |
获取对应的符号表
还原堆栈
通常使用 ndk 提供的 addr2line 或者 ndk-stack 进行堆栈还原。ndk-stack 位于 $NDK_HOME 下。addr2line 位于 $NDK_HOME/toolchains 下。
1 | 使用 addr2line 将堆栈地址还原到代码行 |
堆栈分析
信号 | 描述 |
---|---|
SIGSEGV | 内存引用无效。 |
SIGBUS | 访问内存对象的未定义部分。 |
SIGFPE | 算术运算错误,除以零。 |
SIGILL | 非法指令,如执行垃圾或特权指令 |
SIGSYS | 糟糕的系统调用 |
SIGXCPU | 超过CPU时间限制。 |
SIGXFSZ | 文件大小限制。 |