Android 系统的异常信息捕获

一、 Android tombstone

记录native进程crash 奔溃时, 系统的数据信息。

TOMBSTONE 是 Android 用来记录 native 进程崩溃的 core dump 日志, 系统服务在启动完成后会增加一个 Observer 来侦测 tombstone 日志文件的变化, 每当生成新的 tombstone 文件, 就会增加一条 SYSTEM_TOMBSTONE 记录到 DropBoxManager 中.

What a Terrible Failure简称WTF,WTF是Android系统记录错误的一种方式,报告一个永远不应该发生的情况,有些只是打印Error stack trace和存异常信息文件到dropbox,有些会crash app。

二、dropbox

Android DropBox 是 Android 用来持续化存储系统数据的一个管理类,主要用于记录 Android 运行过程中, 内核, 系统进程, 用户进程等出现严重问题时的 log, 可以认为这是一个可持续存储的系统级别的 logcat。

系统服务dropbox以文件形式记录了系统各种异常信息,例如app crash、native crash、anr、kernel panic等等。

/frameworks/base/core/java/android/os/DropBoxManager.java

/frameworks/base/services/core/java/com/android/server/DropBoxManagerService.java

dropbox日志路径:/data/system/dropbox

1、DropBoxManager dropbox = (DropBoxManager)getSystemService(Context.DROPBOX_SERVICE) 例如,dropbox.addText可实现把需要记录的数据丢给dropbox进行存储。

2、监听广播android.intent.action.DROPBOX_ENTRY_ADDED,可知系统发生了异常 注意权限:android.permission.READ_LOGS --- 平台签名或priv-app

 

java层:handleApplicationCrashInner("crash", r, processName, crashInfo); native层: mAm.handleApplicationCrashInner("native_crash", mApp, mApp.processName, ci);

DEFAULT_AGE_SECONDS = 3 * 86400:文件最长可存活时长为3天

DEFAULT_MAX_FILES = 1000:最大dropbox文件个数为1000

DEFAULT_QUOTA_KB = 5 * 1024:分配dropbox空间的最大值5M

DEFAULT_QUOTA_PERCENT = 10:是指dropbox目录最多可占用空间比例10%

DEFAULT_RESERVE_PERCENT = 10:是指dropbox不可使用的存储空间比例10%

QUOTA_RESCAN_MILLIS = 5000:重新扫描retrim时长为5s

上面这些都是默认值,完全可以通过设置content://settings/global数据库对应项来修改。

使用dropbox的优点

a.利用 DropBoxManager 来记录需要相对持久化存储的错误日志信息

优点:自动抓错, 避免人为因素而产生的错误遗漏

b.错误自动上报

可以利用dropbox每生成新的记录, Dropbox 就会发送广播:

DropBoxManager.ACTION_DROPBOX_ENTRY_ADDED

app可以接收监听改广播获取指定的数据文件内容,内容发送到指定的服务器或邮箱完成错误自动上报。

利用前提:app要具有系统权限 因为:DropBoxManager.ACTION_DROPBOX_ENTRY_ADDED是保护性广播,且读取系统日志也需要android.Manifest.permission.READ_LOGS权限。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值