前文《[摘]Android ANR日志分析指南》也摘抄了如何分析,接下来通过实例解析。

一、主线程被其他线程lock,导致死锁

waiting on <0x1cd570> (a android.os.MessageQueue)

DALVIK THREADS:

"main" prio=5 tid=3 TIMED_WAIT

| group="main" sCount=1 dsCount=0 s=0 obj=0x400143a8

| sysTid=691 nice=0 sched=0/0 handle=-1091117924

at java.lang.Object.wait(Native Method)

- waiting on <0x1cd570> (a android.os.MessageQueue)

at java.lang.Object.wait(Object.java:195)

at android.os.MessageQueue.next(MessageQueue.java:144)

at android.os.Looper.loop(Looper.java:110)

at android.app.ActivityThread.main(ActivityThread.java:3742)

at java.lang.reflect.Method.invokeNative(Native Method)

at java.lang.reflect.Method.invoke(Method.java:515)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:497)

at dalvik.system.NativeStart.main(Native Method)

"Binder Thread #3" prio=5 tid=15 NATIVE

| group="main" sCount=1 dsCount=0 s=0 obj=0x434e7758

| sysTid=734 nice=0 sched=0/0 handle=1733632

at dalvik.system.NativeStart.run(Native Method)

"Binder Thread #2" prio=5 tid=13 NATIVE

| group="main" sCount=1 dsCount=0 s=0 obj=0x1cd570

| sysTid=696 nice=0 sched=0/0 handle=1369840

at dalvik.system.NativeStart.run(Native Method)

"Binder Thread #1" prio=5 tid=11 NATIVE

| group="main" sCount=1 dsCount=0 s=0 obj=0x433aca10

| sysTid=695 nice=0 sched=0/0 handle=1367448

at dalvik.system.NativeStart.run(Native Method)

----- end 691 -----

二、主线程做耗时的操作:比如数据库读写。

"main" prio=5 tid=1 Native

held mutexes=

kernel: (couldn't read /proc/self/task/11003/stack)

native: #00 pc 000492a4 /system/lib/libc.so (nanosleep+12)

native: #01 pc 0002dc21 /system/lib/libc.so (usleep+52)

native: #02 pc 00009cab /system/lib/libsqlite.so (???)

native: #03 pc 00011119 /system/lib/libsqlite.so (???)

native: #04 pc 00016455 /system/lib/libsqlite.so (???)

native: #16 pc 0000fa29 /system/lib/libsqlite.so (???)

native: #17 pc 0000fad7 /system/lib/libsqlite.so (sqlite3_prepare16_v2+14)

native: #18 pc 0007f671 /system/lib/libandroid_runtime.so (???)

native: #19 pc 002b4721 /system/framework/arm/boot-framework.oat (Java_android_database_sqlite_SQLiteConnection_nativePrepareStatement__JLjava_lang_String_2+116)

at android.database.sqlite.SQLiteConnection.setWalModeFromConfiguration(SQLiteConnection.java:294)

at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:215)

at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:193)

at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)

at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)

at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)

at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:808)

locked <0x0db193bf> (a java.lang.Object)

at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:793)

at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:696)

at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:690)

at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:299)

at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:223)

at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)

locked <0x045a4a8c> (a com.xxxx.video.common.data.DataBaseHelper)

at com.xxxx.video.common.data.DataBaseORM.(DataBaseORM.java:46)

at com.xxxx.video.common.data.DataBaseORM.getInstance(DataBaseORM.java:53)

locked <0x017095d5> (a java.lang.Class)

三、binder数据量过大

07-21 04:43:21.573 1000 1488 12756 E Binder : Unreasonably large binder reply buffer: on android.content.pm.BaseParceledListSlice$1@770c74f calling 1 size 388568 (data: 1, 32, 7274595)

07-21 04:43:21.573 1000 1488 12756 E Binder : android.util.Log$TerribleFailure: Unreasonably large binder reply buffer: on android.content.pm.BaseParceledListSlice$1@770c74f calling 1 size 388568 (data: 1, 32, 7274595)

07-21 04:43:21.607 1000 1488 2951 E Binder : Unreasonably large binder reply buffer: on android.content.pm.BaseParceledListSlice$1@770c74f calling 1 size 211848 (data: 1, 23, 7274595)

07-21 04:43:21.607 1000 1488 2951 E Binder : android.util.Log$TerribleFailure: Unreasonably large binder reply buffer: on android.content.pm.BaseParceledListSlice$1@770c74f calling 1 size 211848 (data: 1, 23, 7274595)

07-21 04:43:21.662 1000 1488 6258 E Binder : Unreasonably large binder reply buffer: on android.content.pm.BaseParceledListSlice$1@770c74f calling 1 size 259300 (data: 1, 33, 7274595)

四、binder通信失败

07-21 06:04:35.580 <6>[32837.690321] binder: 1698:2362 transaction failed 29189/-3, size 100-0 line 3042

07-21 06:04:35.594 <6>[32837.704042] binder: 1765:4071 transaction failed 29189/-3, size 76-0 line 3042

07-21 06:04:35.899 <6>[32838.009132] binder: 1765:4067 transaction failed 29189/-3, size 224-8 line 3042

07-21 06:04:36.018 <6>[32838.128903] binder: 1765:2397 transaction failed 29189/-22, size 348-0 line 2916

本文摘抄于《Android ANR日志分析指南》,感谢作者贡献,写得很全。

转 android anr 分析示例,[摘]Android ANR日志分析指南之实例解析相关推荐

  1. linux oom日志分析,oom killer理解和日志分析:知识储备

    oom killer日志分析,这是前篇,准备一些基础知识 带着问题看: 1.什么是oom killer 他是Linux内核设计的一种机制,在内存不足的会后,选择一个占用内存较大的进程并kill掉这个进 ...

  2. Squid代理服务器(透明代理服务配置、日志分析、反向代理、日志分析、ACL访问控制)

    目录 一.Squid 服务基础 (1)代理的工作机制 (2)代理的基本类型 二.安装 Squid 服务 (1)编译安装 Squid (2)修改 Squid 的配置文件 (3)Squid 的运行控制 ( ...

  3. mysql慢查询分析工具_mysql慢查询日志分析工具

    启用 slow log 有两种启用方式:1, 在my.cnf 里 通过 log-slow-queries[=file_name] 2, 在mysqld进程启动时,指定--log-slow-querie ...

  4. awstats linux日志分析,Linux/Centos服务器安装配置日志分析Awstats

    Awstats是用perl语言编写的web日志分析软件,可用于Apache.IIS.Nginx访问日志分析,界面友好.功能强大,支持中文显示. LAMP环境下Awstats安装:wget http:/ ...

  5. android 浮窗示例代码,Android 浮窗开发之窗口层级(示例代码)

    很多人都知道如何去实现一个简单的浮窗,但是却很少有人去深入的研究背后的流程机制,由于项目中浮窗交互比较复杂,遇到了些坑查看了很多资料,故总结浮窗涉及到的知识点: 窗口层级关系(浮窗是如何"浮 ...

  6. mysql慢日志分析工具_mysql慢查日志分析工具 percona-toolkit

    备忘自: http://blog.csdn.net/seteor/article/details/24017913 1. 工具简介 pt-query-digest是用于分析mysql慢查询的一个工具, ...

  7. oracle log 分析程序,oracle之logminer日志分析

    alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; select sysdate from dual; 执行增删操作 alter sy ...

  8. linux日志分析步骤,关于linux:graylog日志分析系统上手教程

    日志剖析零碎能够实时收集.剖析.监控日志并报警,当然也能够非实时的剖析日志.splunk是功能强大且用起来最省心的,然而要免费,免费版有每天500M的限度,超过500M的日志就没法解决了.ELK零碎是 ...

  9. 【Java 虚拟机原理】垃圾回收算法 ( 设置 JVM 命令参数输出 GC 日志 | GC 日志输出示例 | GC 日志分析 )

    文章目录 一.设置 JVM 命令参数输出 GC 日志 二.GC 日志示例 三.GC 日志分析 一.设置 JVM 命令参数输出 GC 日志 在 IntelliJ IDEA 的启动参数中设置 -XX:+P ...

最新文章

  1. CVPR NTIRE 2022|双目超分辨率挑战赛开赛
  2. TensorFlow serving远程访问引擎的容器部署
  3. 欧拉回路【洛谷习题】无序字母对
  4. 开源开放是人工智能发展主要趋势之一
  5. React 18 Beta 来了
  6. 今日最佳:你爸爸给你取名的时候。。。
  7. 产品经理专业知识50篇(五)-用户成长体系设计方案
  8. 查找整数c语言编程,关于算法:查找整数的位数
  9. 学习笔记大型《构建高性能web站点》
  10. 奇异值分解与低秩矩阵近似
  11. Typora入门(中文版)
  12. asp.net中实现登陆的时候用SSL
  13. 深入解析 Raft 模块在云溪数据库中的优化改造(上)
  14. 分享一个VS2010插件 GBackupSolution Add-in for Visual Studio 2008/2010
  15. 戴尔服务器关闭系统自检,戴尔开机自检取消操作方法
  16. Spring Data JPA + QueryDSL
  17. C语言中 sinx cosx 的用法
  18. 【重磅推荐】哥大开源“FinRL”: 一个用于量化金融自动交易的深度强化学习库
  19. STM32L0系列之【工程开始】
  20. 总结numpy中的ndarray,非常齐全

热门文章

  1. php获取邮箱内容吗,php正则验证email邮箱及抽取内容中email的例子
  2. 【CASS精品教程】CASS7.1 道路设计参数文件打开无响应,提示roadpara解决办法,权威解决办法汇总
  3. Java连接SQL Server类MyDBase的实现
  4. linux之lsof和netstat判断端口(port)被哪些应用占用
  5. linux和裸机的区别,操作系统与裸机的区别
  6. drawable文件怎么添加图片_怎么给PDF文件添加书签
  7. 《随机过程》布朗运动理论中的两个反常问题
  8. 你和985硕博研究生,差了这些东西
  9. 史上最冤!美国原子弹之父被骂了9年!最后他上台领奖,竟一把推开了总统.........
  10. 最诡异数学悖论:1+1=1