查看死锁原因 /data/anr/traces.txt

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)

时间: 2024-12-28 01:59:54

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

android ANR traces.txt文件导出分析

来源:https://blog.csdn.net/qq_31939617/article/details/79756718 一:什么是ANR ANR:Application Not Responding,即应用无响应,ANR找原因,基本是通过traces.txt文件分析的 先说发生ANR后,如何导出traces.txt文件(我的习惯是发生一次就导出,不然可能会有很多个traces.txt) 1.连接手机,开发者模式 2.使用cmd命令模式 这样就把所有的ANR文件夹下的文件导入出了,路径就是以c

如何将traces.txt导出

anr问题的log一般都在/data/anr/目录下,使用如下命令即可导出log adb pull /data/anr/traces.txt   d:/     =>意思是将手机上的traces.txt导出到电脑的d目录下 但是也会有该命令失效的时候.你能adb shell ls /data/anr/  看到该文件,但是导出时会提示该文件不存在,但是导出的方式可以如下: 1.adb shell 2.cat /data/anr/xxx >/mnt/sdcard/yy/zz.txt 3.exit

NFC问题分析之死锁引起的ANR

[摘要] 对于Android平台的工程师来说,ANR应该是每个人都会遇到的问题,因为导致它的原因有很多,例如在主线程进行耗时操作,调用大量cpu资源进行复杂的预算等,并且可能在大多数情况下,这类问题不会发生,只会在极端特殊的情况下暴露(例如很长时间的自动化脚本测试,monkey测试),所以我们必须得学会如何去分析这类问题,才能让模块的性能经得住考验. 一. 什么是ANR?为什么会有ANR发生? 如果当你进行一些操作之后,发现手机屏幕上出现类似上面的dialog,那么很不幸,你中招了... ANR

iOS dispatch_sync(dispatch_get_main_queue(), ^{ });死锁原因

1: - (void)viewDidLoad { //dispatch_sync(dispatch_get_main_queue(), ^{ //NSLog(@"3"); //死锁原因 //1:dispatch_sync在等待block语句执行完成,而block语句需要在主线程里执行,所以dispatch_sync如果在主线程调用就会造成死锁 //2:dispatch_sync是同步的,本身就会阻塞当前线程,也即主线程.而又往主线程里塞进去一个block,所以就会发生死锁. //});

oracle查看死锁与解锁

1.查看死锁 SELECT  s.username, decode(l.type,'TM','TABLE LOCK', 'TX','ROW LOCK', NULL) LOCK_LEVEL, o.owner,o.object_name,o.object_type, s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser FROM v$session s,v$lock l,dba_objects o WHERE l.sid = s.sid AN

sqlserver 查看进程以及查看死锁代码

查看进程: SELECT spid, blocked, DB_NAME(sp.dbid) AS DBName, program_name, waitresource, lastwaittype, sp.loginame, sp.hostname, a.[Text] AS [TextData], SUBSTRING(A.text, sp.stmt_start / 2, (CASE WHEN sp.stmt_end = -1 THEN DATALENGTH(A.text) ELSE sp.stmt_

MySQL死锁原因分析

行级锁有三种模式: innodb 行级锁 record-level lock大致有三种:record lock, gap lock and Next-KeyLocks. record lock  锁住某一行记录 gap lock     锁住某一段范围中的记录 next key lock 是前两者效果的叠加. 问题: 行级锁表现形式:next-key lock 错误码: 1213Deadlock found when trying to get lock; try restarting tran

死锁原因的排查

1,打开跟踪,写入日志DBCC TRACEON (3605,1222,-1) –3605写入errorlog,1222死锁DBCC TRACEON(1222,-1) /若在启动时,加-T 1222同时,可开profile中的Deadlock graph跟踪,以图形化2,分析安装目录下生成的日志   1)确定死锁的资源, 据对象不同查看方式不同.DBCC TRACEON(3604) DBCC PAGE(8,1,96,1)DBCC TRACEOFF(3604) 死锁产生的前提:双方互占有了对方所需求

Java 查看死锁的方法

那我们怎么确定一定是死锁呢?有两种方法. 1>使用JDK给我们的的工具JConsole,可以通过打开cmd然后输入jconsole打开. 1)连接到需要查看的进程. 2)打开线程选项卡,然后点击左下角的“检测死锁” 3)jconsole就会给我们检测出该线程中造成死锁的线程,点击选中即可查看详情: 从上图中我们可以看出: ①在线程Thread-1中,从状态可以看出,它想申请Paper这个资源,但是这个资源已经被Thread-0拥有了,所以就堵塞了. ②在线程Thread-0中,从状态可以看出,它