系统异常埋点

原创 2015年07月10日 17:42:57
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

如果系统抛一个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时,这个按原生的来就行;

Android Tombstone/Crash的log分析和定位

有一句话叫做常在河边走,哪有不湿鞋。我们这些研究和开发Android的工程师正应了这句话,相必大家在调试的时候经常会遇到这么个东西吧 *** *** *** *** *** *** *** *** *...

Android Tombstone解决步骤

这周和同事一起解了个tombstone的bug, 记录下分析的过程,免得以后又忘记。。。 1>log的分析 pid: 122, tid: 14745, name: Binder_2  >>> /s...

Tombstone 实例分析

这个实例是由于由于本人在netd函数TetherController::startTethering中打印log信息的时候,去地址的时候错误而引起的,其实问题很快发现并解决了,在这里通过log去分析也...

tombstone 分析

Coredump 是分析Android native exception和kernel exception的利器,coredump是核心转储,可以理解为当进程发生异常无法挽救时,OS机制把这块出问题的...

定位到程序崩溃的地方,TOMBSTONE

每次遇到TOMBSTONE,在堆栈中都会存了一些相关的信息。 如: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 6166617b...

介绍 Android DropBoxManager Service

什么是 DropBoxManager ? Enqueues chunks of data (from various sources – application crashes, kerne...
  • ljchlx
  • ljchlx
  • 2013年01月31日 17:34
  • 8712

Android Touch事件的分发响应机制

关于Touch 时间的分发响应文章有很多了,但是自己理一遍的印象 要比看别人的深刻,这里自己记一下,也便与以后回过头来翻!   Touch 事件 对于 新手来说,是很困扰的,因为事件之间的传递过程,我...

【Android】Android SurfaceFlinger之Gralloc

1、SurfaceFlinger模块Android中SurfaceFlinger与其它模块的关系图如下所示:上图中,最底层的是Linux内核提供的framebuffer显示驱动,设备节点为/dev/g...
  • iEearth
  • iEearth
  • 2017年02月23日 20:50
  • 1082

推荐系统-埋点

现在几乎所有的电商平台都或多或少的上了推荐系统,常用的推荐系统有。热门推荐、最近浏览、猜你喜欢、看了还看、买了还买、绑定销售,等等,这么多NB的系统都依赖一点,就是用户行为数据,这些用户行为数据都从那...

已上线系统的统计埋点重构V1.0

已上线系统的统计埋点重构V1.0
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:系统异常埋点
举报原因:
原因补充:

(最多只允许输入30个字)