系统异常埋点

DropBox会在以下时机抓取相关信息:

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

建议:可新增lowmem

b、原生系统对/data/tombstones目录注册了一个观察者

TAG = SYSTEM_TOMBSTONE

如果系统抛一个tombstone未导致关机,那么就会将此次报错add到DropBox中,这是通过DropBoxManager.addText()接口添加信息到DropBox中的。

        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时,这个按原生的来就行;


[email protected]

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-29 12:30:16

系统异常埋点的相关文章

RDIFramework.NET ━ 9.13 系统日志与系统异常管理 ━ Web部分

RDIFramework.NET ━ .NET快速信息化系统开发框架 9.13  系统日志与系统异常管理 -Web部分  一个软件在投入运行时不可能没有任何异常,在软件发生异常时及时的记录下来,也好我们及时对异常进行跟踪,以解决发生的异常,避免异常的再次发生.异常分为两种情况,一种为客户端发生的异常,另一种为服务端发生的异常.对于客户端发生的异常,通常都会及时的弹出,用户看到后可以反馈给我们.服务器端产生的异常会自动记录到数据库中,管理员可以通过框架异常管理进行查看操作. 框架日志管理对于框架的

Oracle预定义的21个系统异常类型

命名的系统异常 产生原因 ACCESS_INTO_NULL 未定义对象 CASE_NOT_FOUND CASE 中若未包含相应的 WHEN ,并且没有设置 ELSE 时 COLLECTION_IS_NULL 集合元素未初始化 CURSER_ALREADY_OPEN 游标已经打开 DUP_VAL_ON_INDEX 唯一索引对应的列上有重复的值 INVALID_CURSOR 在不合法的游标上进行操作 INVALID_NUMBER 内嵌的 SQL 语句不能将字符转换为数字 NO_DATA_FOUND

监控线上系统异常日志

在监控线上系统时,需要实时监控异常日志信息,想到三种办法: 1.在应用代码里调用报警逻辑.如,catch到异常时,在catch代码块里调用报警接口. 2.使用shell脚本,如,tail -f | grep '***'.tail -f会间隔一秒读取日志内容,通过grep设置关键字,可以读取异常欣喜. 3.使用监控工具,如,Nagios. 监控线上系统异常日志,码迷,mamicode.com

基于系统调用的系统异常检测的可用数据集总结

因为我主要研究的是通过监控系统调用进而判断系统是否异常,所以最近在整理关于系统异常检测可用的数据集.目前搜集到的数据集主要有UNM,ADFA等. (一)UNM Dataset UNM数据集是新墨西哥大学为了研究入侵免疫系统而采集的数据集.该网站的主页是这样的: 下载的地址是:https://www.cs.unm.edu/~immsec/systemcalls.htm UNM数据集主要包含在活跃进程下系统调用的若干数据集. 这些进程主要包括守护进程以及那些不是守护进程的应用进程(这些应用程序在大小

【原创】访问Linux进程文件表导致系统异常复位的排查记录

前提知识: Linux内核.Linux 进程和文件数据结构.vmcore解析.汇编语言 问题背景: 这个问题出自项目的一个安全模块,主要功能是确定某进程是否有权限访问其正在访问的文件. 实现功能时,需要在内核里通过扫描该进程打开的文件表,获取文件的路径,和安全模块里配置的可访问文件的进程白名单进行匹配: 模块会一直到搜索到进程pid为1的进程,也就是init进程.在访问中间某个父进程的文件表时,出现struct task_struct的files指针为空的情况, 导致系统异常复位. 下面就是这次

排错:Windows系统异常导致Filebeat无法正常运行

Windows 下Filebeat排错Case实例一份,请查收. 问题描述: Windows Server下Filebeat Agent服务无法正常启动,导致网络数据打点无法正常进行,影响大范围用户网络使用等: 报错信息如下: 查看对应log文件,日志信息如下: 2019-03-04T11:38:14+08:00 INFO Home path: [C:\Program Files\Filebeat] Config path: [C:\Program Files\Filebeat] Data pa

springboot统一返回json数据格式并配置系统异常拦截

本文链接:https://blog.csdn.net/syystx/article/details/82870217通常进行前后端分离开发时我们需要定义统一的json数据交互格式并对系统未处理异常进行处理.以下具体介绍在springboot中的实现过程,通过该章节代码可实现框架统一异常处理,并当后台接口反馈类型不为统一格式时能够进行重新包装成统一格式进行返回. 具体实现如下: 1.定义统一返回格式 public class RtnMsg{ private String rtnCode; priv

vShield Manager5.5.4 防毒系统异常解决方案

最近升级虚拟化平台,从ESXI5.0升级至ESXI6.0.0 Update1,中间经过了Windows vCenter5.1迁移至VCSA6.0.View 5.1 升级至 Horzion View 6.1.防毒系统升级.vShield Manager升级等等,过程中也遇到了很多问题,并逐步的解决了,在此分享给大家,希望对于后续各位的升级有所帮助: 报错信息: 1.显示vShield Endpoint Host status,如下图所示: 2.查看vShield显示未安装状态,如下图所示: 3.重

网赌被黑出款通道审核维护系统异常风控不给出款怎么办?

生活不可能一帆风顺,总会有波折,总会有险阻,生活是个爱开玩笑的孩子,也许今天给你所有,明天又会让你一无所有,无需烦恼,该来的总会来,再黑的夜晚也会有黎明到来的那一刻,不管生活有多么曲折,只要拥有幸福的态度就能挺过漫漫长夜,就能迎来美好的明天. 现今的网络就如同汪洋大海,我们个人只是其中的一束,如此广阔的海洋每时每刻有多少纷争在发生着?相信有很多朋友都遇到了各种理由不给出款,什么系统自动抽查审核,第三方维护,账户异常登录等等,搞得焦头烂额,除了默默的悲哀也不知道怎么办! 毫无征兆的问题就发生了,感