Android ANR这个错误大家并不陌生,但是从Android 2.2开始出错的ANR信息会自动上传给Google进行系统分析改进,当然了你的应用ANR错误其实保存在一个文件中,在/data/anr/traces.txt文件中,如果你的Android设备没有Root越狱过,可以将你的软件装在模拟器上分析,模拟器可以直接使用Eclipse中的DDMS里的File Explorer来打开,如下图:

虽然traces.txt是一个文本文件,不过使用windows上的记事本打开可能无法正常处理linux的换行符,这里Android123建议你使用ultra edit查看,当然了使用Windows自带的写字板也是不错的。下面一起来分析下错误吧,第一行为出错的时间,第二行都会写上发生ANR的package
Name,下文是com.android.systemui这个包,里面的部分线程出了问题,通过下面的的xxx方法以及对应的java文件,后面的数字为xxx.java文件的第几行,是不是很方便呢?
----- pid 125 at 2011-02-22 05:18:01 -----
Cmd line: com.android.systemui
DALVIK THREADS:
(mutexes: tll=0 tsl=0 tscl=0 ghl=0 hwl=0 hwll=0)
"main" prio=5 tid=1 NATIVE
  | group="main" sCount=1 dsCount=0 obj=0x4001f1a8 self=0xce48
  | sysTid=125 nice=0 sched=0/0 cgrp=default handle=-1345006528
  | schedstat=( 981213067 8042604425 151 )
  at android.os.BinderProxy.transact(Native Method)
  at android.os.storage.IMountService$Stub$Proxy.isUsbMassStorageConnected(IMountService.java:95)
  at android.os.storage.StorageManager.isUsbMassStorageConnected(StorageManager.java:385)
  at com.android.systemui.usb.StorageNotification.<init>(StorageNotification.java:71)
  at com.android.systemui.statusbar.policy.StatusBarPolicy.<init>(StatusBarPolicy.java:412)
  at com.android.systemui.statusbar.StatusBarService.onCreate(StatusBarService.java:239)
  at android.app.ActivityThread.handleCreateService(ActivityThread.java:1920)
  at android.app.ActivityThread.access$2500(ActivityThread.java:117)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:982)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loop(Looper.java:123)
  at android.app.ActivityThread.main(ActivityThread.java:3647)
  at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:507)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
  at dalvik.system.NativeStart.main(Native Method)
"Binder Thread #2" prio=5 tid=8 NATIVE
  | group="main" sCount=1 dsCount=0 obj=0x40511270 self=0x1c1100
  | sysTid=153 nice=0 sched=0/0 cgrp=default handle=1141608
  | schedstat=( 27181321 64708345 5 )
  at dalvik.system.NativeStart.run(Native Method)
"Binder Thread #1" prio=5 tid=7 NATIVE
  | group="main" sCount=1 dsCount=0 obj=0x405111a8 self=0x1349c8
  | sysTid=152 nice=0 sched=0/0 cgrp=default handle=1264008
  | schedstat=( 31857510 74284459 5 )
  at dalvik.system.NativeStart.run(Native Method)
"Compiler" daemon prio=5 tid=6 VMWAIT
  | group="system" sCount=1 dsCount=0 obj=0x4050dd10 self=0x116538
  | sysTid=144 nice=0 sched=0/0 cgrp=default handle=982520
  | schedstat=( 7319346 103454345 12 )
  at dalvik.system.NativeStart.run(Native Method)
"JDWP" daemon prio=5 tid=5 VMWAIT
  | group="system" sCount=1 dsCount=0 obj=0x4050dc60 self=0x116400
  | sysTid=142 nice=0 sched=0/0 cgrp=default handle=986536
  | schedstat=( 32876840 393298925 20 )
  at dalvik.system.NativeStart.run(Native Method)
"Signal Catcher" daemon prio=5 tid=4 RUNNABLE
  | group="system" sCount=0 dsCount=0 obj=0x4050dba0 self=0x253ab0
  | sysTid=141 nice=0 sched=0/0 cgrp=default handle=2439792
  | schedstat=( 94447996 796994478 19 )
  at dalvik.system.NativeStart.run(Native Method)
"GC" daemon prio=5 tid=3 VMWAIT
  | group="system" sCount=1 dsCount=0 obj=0x4050daf8 self=0x8fd40
  | sysTid=128 nice=0 sched=0/0 cgrp=default handle=2439592
  | schedstat=( 103352102 819201761 21 )
  at dalvik.system.NativeStart.run(Native Method)
"HeapWorker" daemon prio=5 tid=2 VMWAIT
  | group="system" sCount=1 dsCount=0 obj=0x4050da40 self=0xf0c70
  | sysTid=127 nice=0 sched=0/0 cgrp=default handle=2439528
  | schedstat=( 971134410 6445300652 103 )
  at dalvik.system.NativeStart.run(Native Method)

查看死锁原因 /data/anr/traces.txt的更多相关文章

  1. 命令行dump anr traces.txt文件

    adb shell su ps //这里找到自己app对应的pid pid //退出shell 模式 adb pull /data/anr/traces.txt f:\log

  2. Android 导出traces.txt 遇到的坑

    我一直以为traces.txt 导出需要root .因为每当我 cd data ll 然后就会告诉我 Permission denied 后来我问同事,怎么导出traces.txt 文件.同事说很简单 ...

  3. ANR无法生成traces.txt文件

    在有些设备上ANR无法生成traces.txt文件,kill -3又不能准确把握时机或者没权限,可能是软件访问这个路径失败,可以在/data/anr/下面建立一个空的traces.txt,注意保证an ...

  4. ASP.NET MVC Filters 4种默认过滤器的使用【附示例】 数据库常见死锁原因及处理 .NET源码中的链表 多线程下C#如何保证线程安全? .net实现支付宝在线支付 彻头彻尾理解单例模式与多线程 App.Config详解及读写操作 判断客户端是iOS还是Android,判断是不是在微信浏览器打开

    ASP.NET MVC Filters 4种默认过滤器的使用[附示例]   过滤器(Filters)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,不是每个请求都会响 ...

  5. 使用 mysqladmin debug 查看死锁信息

    使用 mysqladmin debug 查看死锁信息 mysqladmin -S /mysql/data/mysql.sock debug 然后在error日志中,会看到: 11 lock struc ...

  6. Java如何查看死锁

    Java中当我们的开发涉及到多线程的时候,这个时候就很容易遇到死锁问题,刚开始遇到死锁问题的时候,我们很容易觉得莫名其妙,而且定位问题也很困难. 因为涉及到java多线程的时候,有的问题会特别复杂,而 ...

  7. Java如何查看死锁?

    转载自 https://blog.csdn.net/u014039577/article/details/52351626 Java中当我们的开发涉及到多线程的时候,这个时候就很容易遇到死锁问题,刚开 ...

  8. SQLServer查看死锁

    SQLServer查看死锁 if exists ( select * from sys.procedures where name like '%USP_ShowLocks%' ) drop proc ...

  9. [20190416]查看shared latch gets的变化.txt

    [20190416]查看shared latch gets的变化.txt 1.环境:SYS@book> @ ver1PORT_STRING                    VERSION  ...

随机推荐

  1. JavaEE Tutorials (8) - Java持久化API介绍

    8.1实体96 8.1.1实体类的需求97 8.1.2实体类中的持久化字段和属性97 8.1.3实体的主键101 8.1.4实体关系中的多重性103 8.1.5实体关系中的方向103 8.1.6实体中 ...

  2. kinect for windows - SkeletonBasics-D2D详解之一

    之前的文章介绍了深度图的获取,但是深度图只是提供了一些数据,这些数据给上层应用使用还是偏底层一些,我们希望在这个基础上,获取一些信息,比如手挥动,人跑步,或者运动等等,那么这个文章开始我们来讲述kin ...

  3. 转载Spring IntrospectorCleanupListener

    "在服务器运行过程中,Spring不停的运行的计划任务和OpenSessionInViewFilter,使得Tomcat反复加载对象而产生框架并用时可能产生的内存泄漏,则使用Introspe ...

  4. PHP自学之路-----javascript基础入门

    Javascript概述: Javascript是基于对象和事件的脚本语言.特点; 1.安全性(不允许直接访问本地硬盘),它可以做的就是信息的动态交互. 2.跨平台性. JavaScript与HTML ...

  5. [cocos2d-x]用CCSpriteBatchNode进行文理贴图的优化

    引言: 我们在进行手机游戏开发的过程中,由于手机的内存资源是有限的,那么对纹理贴图的优化是非常有必要的,有可能相同的功能,优化的好与不好对内存资源的消耗是非常明显的,下面我就用一个例子来说明一下. 说 ...

  6. Java基础--finalize()方法

    原理: 一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法,并在下一次垃圾回收动作发生时,才会真正回收对象占用的内存. 用途: 1)释放通过某种创建对象方式以外的方式为对 ...

  7. ASP.NET上传文件的三种基本方法

    ASP.NET依托.net framework类库,封装了大量的功能,使得上传文件非常简单,主要有以下三种基本方法. 方法一:用Web控件FileUpload,上传到网站根目录. Test.aspx关 ...

  8. xhprof安装记录

    选择一个工具分析PHP函数调用的资源耗用明细,以图表化的形式展现,方便优化代码. 安装xhprof $ pecl install xhprof-beta
  在php.ini引用的extension中 ...

  9. CoffeeScript 入门笔记

    写在前面: 被英文版指南坑了...闹了很久才明白.coffee怎么用.安装前需要有稳定版 Node.js, 和 npm (Node Package Manager). 借助 npm 可以安装 Coff ...

  10. CMD获取当前目录的绝对路径

    @echo offecho 当前盘符:%~d0echo 当前盘符和路径:%~dp0echo 当前批处理全路径:%~f0echo 当前盘符和路径的短文件名格式:%~sdp0echo 当前CMD默认目录: ...