系统异常埋点
来源:互联网 发布:戒掉手机知乎 编辑:程序博客网 时间:2024/06/09 17:27
DropBoxManager会在以下时机抓取相关信息:
a、出异常关机前
SystemServer会收集以下类型报错:watchdog、anr、wtf、lowmem、native_crash、crash
TAG = watchdog、anr、wtf、lowmem、native_crash、crash
此时是通过ActivityManagerService.addErrorToDropBox()接口来收集信息并添加到DropBox中,可在addErrorToDropBox()中做拦截以抓取更多的日志:
12883 public void addErrorToDropBox(String eventType,
12884 ProcessRecord process, String processName, ActivityRecord activity,12885 ActivityRecord parent, String subject,12886 final String report, final File logFile,12887 final ApplicationErrorReport.CrashInfo crashInfo) {12888 // NOTE -- this must never acquire the ActivityManagerService lock,12889 // otherwise the watchdog may be prevented from resetting the system.12890
b、原生对/data/tombstones目录注册了一个观察者
TAG = SYSTEM_TOMBSTONE
sTombstoneObserver = new FileObserver(TOMBSTONE_DIR.getPath(), FileObserver.CLOSE_WRITE) { @Override public void onEvent(int event, String path) { try { File file = new File(TOMBSTONE_DIR, path); if (file.isFile()) { addFileToDropBox(db, prefs, headers, file.getPath(), LOG_SIZE, "SYSTEM_TOMBSTONE"); } } catch (IOException e) { Slog.e(TAG, "Can't log tombstone", e); } } };这个逻辑在frameworks/base/core/java/com/android/server/BootReceiver.java文件中。
c、frameworks/base/core/java/com/android/server/BootReceiver.java中存在开机后抓取异常信息的逻辑
整机重启后(Kernel和Flyme):TAG = SYSTEM_BOOT
Flyme重启: TAG = SYSTEM_RESTART
从Recovery启动: TAG = SYSTEM_RECOVERY_LOG
开机扫描/data/tombstones目录:TAG = SYSTEM_TOMBSTONE
开机后原生逻辑已经抓取了一些信息,但不够多和细。
建议:
在SYSTEM_BOOT时,不用抓什么日志,因为整机重启,所有信息被冲掉;
在SYSTEM_RESTART时,可尝试抓取Android和kernel日志,这时可能会抓取到有用信息,但是由于开机已经有一段时间了,异常日志可能已被冲掉;
在SYSTEM_RECOVERY_LOG时,这个按原生的来就行;
0 0
- 系统异常埋点
- 某系统的数据异常点挑选
- 异常点检测原理和系统设计
- 推荐系统-埋点
- 系统异常
- MIPS异常入口点
- 异常处理注意点
- 异常点检测
- VBA-突出异常点
- 异常数据点检测
- Android Webview异常之易忽略的点:更新系统Webview
- .NET异常处理注意点
- 异常点监测:Anomaly Detection
- 异常需要注意点小结
- Outlier Detection(异常点检测)
- 异常处理的注意点
- 打断点遇到的异常
- 异常测试的测试点
- ViewAnimator 之(二)ViewFlipper
- Oracle-BPM(三)
- WebStorage当做简单数据库
- POJ 2106 Boolean Expressions(模拟+LL1)
- 二维数组最大面积的问题(动态规划)
- 系统异常埋点
- c 语言 Chapter11指针
- mybatis ---- 级联查询 一对多 (集合映射)
- MyEclipse配置输出控制台信息至文本文件中
- ubuntu 14.04 下某些键盘字符出现异常
- Swift-ReactiveCocoa3.0(二)SignalProducer
- 如何快速配好java环境变量和查看电脑上安装JDK的版本位数
- Java中的HashCode(1)之hash算法基本原理
- Android将TextView中的文字替换为一个小图片的方法