system server ANR 一种分析方法 -- Android JVM异常重启简析

Android SystemServer ANR总结 SystemServer ANR 阅读详情

SYSTEM SERVER进程ANR 一般会导致java vm不停重启,还好保留了自动打印log到文件中的方法,出现这种概率性问题,从log入手就简单多了。

 

1. 找到SYSTEM server的PID,一般在logcat中会有这么一句

     System server process 2094 has been created; 2094就是你需要的PID

2. 根据pid去搜索写入anr的地方,比如log中应该会有下面这些log:

    05-10 11:10:02.360 I/Process ( 2094): Sending signal. PID: 2094 SIG: 3 这里发了SIGQUIT ----向system server进程发quit信号,这里是“果”
    05-10 11:10:02.360 I/dalvikvm( 2094): threadid=4: reacting to signal 3
    05-10 11:10:02.420 I/dalvikvm( 2094): Wrote stack traces to '/data/anr/traces.txt'            

    之后也一定会有类似的kill log:

    05-10 11:10:34.860 I/Process ( 2094): Sending signal. PID: 2094 SIG: 9
    05-10 11:10:34.860 W/Watchdog( 2094): *** WATCHDOG KILLING SYSTEM PROCESS: null    ----  这里发出了kill 

 

   至于ANR的“因”,继续在log中往上寻找,也一定能有类似的语句:

    05-10 11:09:37.980 W/ActivityManager( 2094): Timeout of broadcast BroadcastRecord{2b1a7f48 android.intent.action.SCREEN_OFF} --这里就是"因"SCREEN_OFFtimeout
    05-10 11:09:37.980 W/ActivityManager( 2094): Receiverduring timeout: BroadcastFilter{2b161a08 ReceiverList{2b1619d0 2094 system/1000 local:2b130420}}    

 

3. 根据上面的出现“因”的时间戳,去kernel中寻找相应的点,看是否有错。运气好的话在附近的logcat或kernellog中能找到具体的问题点。

   

    笔者遇到的SCREEN_OFF 导致的VM重启是suspend时引起的,具体原因就不说了。

 

另外:一般的ANR可以从/data/anr/traces.txt (默认是开启的)中看到最后停在哪个函数上。 

干货:ANR日志分析全面解析 业界在如何解决和避免ANR问题上已经有较多博文,但是在如何分析ANR日志上很少有全面完备的阐述。本文系统总结了分析ANR日志的技巧,阅读本文将获得快速分析线上ANR日志的能力。 阅读详情

相关推荐

【Android】system_server 创建和启动流程

SystemServer进程的创建和启动流程 在将SystemServer的启动流程之前,先回顾一下上一篇章的内容: 上篇文章中,我们介绍了从init进程到zygote进程再到SystemServer进程开始创建的流程,大致是这样的: 1、执行app_main.cpp文件的main方法(init进程中) 2、main方法中初始化AndroidRuntime 3、执行runtime.start()启动Android运行时环境,其中,start()方法内部通过startVM方法创建了虚拟机,通过startReg

yang553566463的博客 5108

你真的会解决android ANR 问题吗?

ANR 详解思路,案例。

android 系统定制开发那些事 9287

Android真实系统架构:从Linux内核到Framework的三层绞杀结构

Android并非教科书定义的标准化操作系统,而是一个以Linux内核为基底、经深度裁剪与定制的移动工程生态。其核心原理在于三层紧耦合架构:底层是被阉割又强扩展的Linux内核(含LMK内存管理、wakelock电源机制与Binder IPC);中层是芯片厂商主导的HAL与Vendor Interface,充满私有扩展与兼容性暗坑;上层则是Java Framework与Native Runtime持续博弈的‘拔河现场’。这种架构赋予Android极强硬件适配能力与商业灵活性,但也导致功耗差异、OTA升级复杂

diaoqi6581的博客 424

应用Binder线程耗尽导致systemserver anr并重启问题

SystemServer ANR 最终导致重启的分析 涉及文件: 1 bugreport 2 BinderTrace 3 WDT AA : 从Bugreport中找到kill system_server的关键字,如下: W Watchdog: *** WATCHDOG KILLING SYSTEM PROCESS: Blocked in handler on i/o thread (and...

专注 专心 专业 1万+

第 18 章:ART 运行时

Android运行时(ART)是Android应用的执行环境,负责加载和执行DEX字节码。ART通过多层级编译策略(解释器、JIT、AOT)和并发垃圾回收(如CC和CMC收集器)优化性能。关键组件包括类链接器、dex2oat编译器、JIT编译器和内存管理系统。ART支持模块化更新,并通过配置文件引导优化(PGO)提升应用性能。调试能力基于JVMTI,提供断点、类重定义等功能。Android 17引入了多项改进,如分代标记-压缩GC、禁止反射修改static final字段、DEX容器格式V41等。ART架构

dengfuma的专栏 283

Google Play接入与Firebase参数耦合实战指南

Android应用上架Google Play本质是建立一套跨平台、多组件的身份信任链,其核心在于包名、签名证书SHA-1、Firebase应用ID等关键参数的严格一致性。这些参数贯穿编译期(Keystore)、配置期(Play Console/Firebase控制台)与运行期(google-services.json、AndroidManifest.xml),任一环节错位都会导致登录失败、推送丢失、数据打点归零等静默故障。尤其在Unity等跨引擎项目中,本地构建参数与云端服务配置的割裂极易引发‘出参’失效—

3617

面试题kkk

这篇文章摘要主要涵盖了Android开发中的核心知识点和技术难点,包括数据结构、Java与Kotlin语言特性、多线程与并发、内存管理、安卓组件与UI、IPC通信、数据库、多媒体处理、设计模式、性能优化、跨端开发等多个方面。文章详细解析了常见数据结构的使用与实现、JVM机制、内存泄漏分析与解决方案、Activity生命周期、事件分发机制、Handler原理、音视频处理、设计模式应用等核心内容,并提供了实际项目中的技术卡点与解决方案。此外,还涉及了性能优化策略、跨端开发差异、技术方案设计思路以及Git常用命令

mix39的博客 931

安卓面试资料总结

本文主要包含三部分内容:个人面试准备、工作经验技术问题和纯技术问题。第一部分详细列出了面试常见问题及参考答案,包括自我介绍、项目经验、离职原因等;第二部分聚焦Android开发技术,涵盖开机流程、系统服务创建、按键上报等具体实现;第三部分解析Activity生命周期、Service启动方式等技术要点。全文内容实用性强,既包含面试技巧指导,又提供具体技术实现方案,适合Android开发者参考学习。

weixin_44081096的博客 418

android 面试题

ContextImpl.startActivity → Instrumentation.execStartActivity → AMS.startActivity → 校验权限、创建 ActivityRecord、Pause 当前 Activity → ApplicationThread.scheduleTransaction → ActivityThread.H → LaunchActivityItem → performLaunchActivity(创建 Activity、调用 onCreate)。

qq_25657125的博客 398

拼多多Android面试题及参考答案

Android 系统采用分层架构设计,从底层到上层依次为Linux 内核层硬件抽象层(HAL)系统运行时库层应用框架层应用层,共五层。位置:Linux 内核层与系统运行时库层之间,是“硬件与系统的隔离层”。核心作用:屏蔽硬件差异,为上层提供统一的硬件访问接口,解决 Android 开源与硬件厂商闭源的矛盾,具体功能如下:硬件能力抽象:将硬件的具体实现(如不同厂商的摄像头芯片、音频芯片)封装为标准化接口(如Camera HALAudio HAL。

大模型大数据攻城狮的专栏 1285

3D slicer查看形变场

3Dslice显示数据和形变场 将需要可视化的数据也导入3Dslice,注意描述为volume(图1a),如果没有显示是因为路径中不能有中文,也就是moving图像。 (b) 图1、数据导入形变场和 将相应的形变场数据直接拖入3Dslice,并修改描述为形变场(图1b)。 点击transform菜单图2(a),然后勾选形变场可视化图2(b)。 (b) 图2...

fanre的专栏 1947

智能汽车Android笔试:底层原理与性能优化全解析

Android开发进阶离不开对底层原理的理解,从Handler消息机制、Binder IPC到View绘制流程,这些基础概念决定了应用的稳定与性能。在智能汽车与车机系统快速发展的今天,车载Android对系统稳定性、内存优化和启动速度提出了远超手机端的要求。车企笔试往往聚焦Framework层、多线程并发、性能调优等深水区,考查候选人对系统定制和极端条件下稳定运行的理解。以小鹏汽车秋招真题为例,拆解选择题、简答题、编程题的考察逻辑,提供车机方向Android笔试的备考路线,帮助你建立从原理到工程实践的完整知

weixin_27038245的博客 271

GIS小白也能看懂的实战:5步教你将ArcGIS里的等高线和水系完美导入CAD做规划图

本文详细介绍了如何将ArcGIS中的等高线和水系数据高效导入CAD,制作专业规划底图的5个关键步骤。从数据准备、ArcGIS处理到CAD优化,涵盖坐标系设置、数据裁剪、格式转换等实用技巧,特别适合设计规划领域的新手快速掌握GIS与CAD协同工作流程。

weixin_27966471的博客 426

Android内存管理与性能优化面试真题

概念解析:LRU算法的⼯程实现 LruCache(Least Recently Used,最近最少使⽤)是Android提供的⼀个核⼼缓存⼯具类。它的设计理念⾮常符合⼈类直觉:“如果⼀个数据最近被访问过,那么它在未来被访问的概率12 / 38极⾼;反之,如果⼀个数据很久没被碰过,当内存吃紧时,它就应该第⼀个被踢出局。” 在源码层⾯,LruCache 的底层⼼脏是⼀个 LinkedHashMap。

qq_52269550的博客 690

打造你自己的小程序容器 —— 一套能装得下整个未来的跨端技术!

摘要: 本文介绍了一种基于Capacitor框架开发的轻量级“小程序容器”解决方案——LapDrop。通过模拟微信小程序的运行逻辑(动态加载、原生能力调用、沙盒环境),LapDrop允许开发者自主构建跨平台(iOS/Android/Web)的小程序生态。其核心利用Capacitor的插件桥接机制,实现JS与原生功能的无缝调用,并支持浏览器调试与原生环境一致化。优势包括插件化架构、状态隔离、热更新及开放权限控制,适用于企业级模块化应用或开发者工具。未来计划扩展生命周期管理、远程加载等功能,目标成为开源的小程序

CangYuChenAi的博客 978

Android-音频配置文件详解

前言:   Android P 引入了一种新的音频政策配置文件格式 (XML),用于描述音频拓扑。新的 XML 文件支持定义输出输入流配置文件、可用于播放和捕获的设备以及音频属性的数量和类型。但是每个项目的代码里面都有很多音频配置文件,具体使用的是哪个文件呢?本文将详细讲述。 1. 查看运行时具体使用的xml adb shell dumpsys media.audio_policy | grep -iE "Config source:" 结果如下: Config source: /vendor

cheriyou_的博客 3947

ANR问题分析

ANR概念 ANR(Application Not Responding) 应用程序无响应。如果应用程序在UI线程被阻塞太长时间,就会出现ANR,通常出现ANR,系统会弹出一个提示提示框,让用户知道,该程序正在被阻塞,是否继续等待还是关闭。 出现ANR必须解决 ANR类型 为什么出现ANR 1:主线程频繁进行耗时的IO操作:如数据库读写 2:多线程操作的死锁,主线程被block;held by 3:主线程被Binder 对端block; 4:System Server中WatchDog出现ANR; 5:se

yzpbright的博客 2700

ArcGIS基础实战:面数据拓扑创建和错误修改全流程

通过下图的操作我们可以发现,图层的【Shape_Length】和【Shape_Area】字段的数值都发生了改变,表明两个图层重叠的那一部分图斑合并到另一个图班上,其面积会减小、长度会变大(自己重新计算一下也可以得到此验证结果的)。如图【拓扑实验结果】文件夹里右键,新建【文件地理数据库】,并进行命名为【xx拓扑检查】备注:养成良好的命名习惯。然后在【xx拓扑检查】下右键打开【新建要素数据集】,并对数据集进行命名为【XX拓扑】,然后进行下一步设置。在【KK拓扑】数据集上右键,新建【拓扑】。

yuanYW7556的博客 1万+

system_server ANR分析之误报

工作中遇到system_server出现ANR,实际分析了日志后,发现问题并不是出在system_server,而是由于其它进程出现了ANR导致的system_server误报(运行环境Android 11)。至此,问题结案,是系统在收集ANR日志信息的时候,真正出现ANR的应用由于已经被kill了,导致没有采集到真正出现ANR的应用的堆栈信息,而把锅甩给了system_server这个“倒霉蛋”。与anr_2023-06-23-09-05-04-876文件中的pid信息一致,

borise123456的专栏 438

从零构建安全通信:mbedtls与ECDSA在嵌入式系统中的实战指南

本文详细介绍了如何在嵌入式系统中使用mbedtls和ECDSA实现安全通信,重点探讨了ECDSA相比RSA的优势、mbedtls的模块化裁剪策略、密钥安全存储方案以及完整的签名验签流程。通过实战案例和优化技巧,帮助开发者在资源受限环境下构建高效可靠的安全通信系统。

weixin_28338005的博客 685

Django 小实例S1 简易学生选课管理系统 —— 〇、初步介绍与演示

python Django实现的一个简易的教务选课系统。 介绍与演示的视频版本已发到我的b站: https://www.bilibili.com/video/BV1er4y1w7ty。 项目已上传到我的github: https://github.com/BigShuang/SimpleStudentCourseManagementSystem。 S1总目录: 〇、初步介绍与演示 一、项目流程梳理与数据库设计 ======================= 大爽歌作,made by big shuang.

大爽老师的博客 5945

ANR机制以及问题分析

本文转自:https://duanqz.github.io/2015-10-12-ANR-Analysis 1. 概览 ANR(Application Not Responding),应用程序无响应,简单一个定义,却涵盖了很多Android系统的设计思想。 首先,ANR属于应用程序的范畴,这不同于SNR(System Not Respoding),SNR反映的问题是系统进程(system_server)失去了响应能力,而ANR明确将问题圈定在应用程序。 SNR由Watchdog机制保证,具体可以查阅Watc

苦逼的程序猿☺ 1497

【AI Agent 实战】OpenClaw 全面解析 + 全平台一键部署教程(本地 AI 智能体)

本文收录于 AI 智能体 & 自动化实战系列,手把手带你从零部署本地可控的 AI 执行助手关键词:OpenClaw、AI Agent、本地 AI 部署、自动化助手、Docker 部署

爱人爱己,风生水起 8027

Android常见SWT/ANR原因

Android常见SWT/ANR原因

weixin_45035951的博客 1282

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: android 应用 heap size分配
下一篇: 在android jni等cpp/c文件中打印错误号 使用宏 errno
勤奋专注
博客等级 码龄19年 80粉丝 69原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值