Android 分析log
2013-05-31 09:29
716 查看
一、分析前的准备工作
1. 查看内存
2. 查看进程信息,能够实时显示系统中各个进程的资源占用状况,类似于 Windows 的任务管理器
3. 虚拟内存的查看,目前还看不懂
4. 虚拟机信息,包括进程的,线程的跟踪信息,这是用来跟踪进程和线程具体点的好地方 。
导出到当前目录 adb pull /data/anr/traces.txt .
二、分析log
1. 查找关键字
通过查找:"null" "error" " "E/","Fatal","NullPointerException","Build fingerprint:","exception","anr","DexOpt"等的错误信息,来定位问题
1)空指针问题
NullPointerException: 这个直接找到java代码,首先分析为什么会是空指针,如果逻辑上没有问题,加上一个判断就可以,也就是说如果为空的时候再次赋值或者直接返回
2).没有捕获异常问题
Exception:
能捕获的话捕获
3)ANR问题
anr:要分析原因了,看看什么导致的,然后优化代码
例子
指定哪个java包出问题
E/ActivityManager( 957): ANR in com.ipanel.join.appstore
进程号为957发生了如下错误:com.ipanel.join.appstore 包下面 Broadcast问题
ANR原因:
E/ActivityManager( 957): Reason: Broadcast of Intent { act=android.appwidget.action.APPWIDGET_UPDATE cmp=com.ipanel.join.appstore/.widget.SmallWidget1 (has extras) }
这是ANR的堆栈调用文件
I/dalvikvm( 1014): Wrote stack traces to '/data/anr/traces.txt'
通过上面的log信息分析,应该是接收一个广播消息时超时了
我们再分析虚拟机信息 ,打开/data/anr/traces.txt,可有通过adb pull /data/anr/traces.txt .
这里每一段都是一个线程 ,当然我们还是看线程号为1的主线程了。通过分析发现关键问题是这样:
搜索“DALVIK THREADS”关键词,快速定位到本应用程序的虚拟机信息日志
其实从这句话:
at org.apache.harmony.luni.platform.OSNetworkSystem.connect(Native Method)
基本上确认是 socket ->connect 连接超时了,导致主线程5s内没有响应从而产生ANR错误。默认的connect连接timeout时间是75s
其实解决办法就是利用非阻塞方式进行连接即可。
从CPU占用率上也可以看出是在kernel中执行堵塞住了
E/ActivityManager( 957): 75% TOTAL: 4.7% user + 70% kernel
4)Fatal问题
Fatal: 比较严重了,很多都很动态库和空指针有关,一般会接下来打印"Build fingerprint:"或”NullPointerException“
5)动态库问题
Build fingerprint:
动态库的问题,如何调试,还在学习中。。。
Log:
arm-eabi-addr2line这个工具通过库的trace来跟踪代码的,这个工具位于Android\prebuilt\linux-x86\toolchain\arm-eabi-4.4.3\binarm-eabi-addr2line, "source built/envsetup.sh"可以将这个工具加入到全局
查找:
可以知道是sensorservice在调enable的时候出现了问题,具体原因还得看sensorservice的管理机制,总之能定位到问题出现的地方了。
6)执行DexOpt错误
DexOpt:解压或优化extract+optimize DEX出的问题
I、没有出现magic number错误,这个原因与原子操作无关(这是一快速的加锁和解锁的轻量级操作函数)
II、执行dexopt出错,查明是服务器硬盘没空间了,导致引导文件系统的时候没有空间进行解压而失败
2.系统启动后默认其妙或随机死机情况
出现这种错误:
查看内存: cat /proc/meminfo 发现空闲内存只剩下几M空间了。
请加大android系统的内存即可解决问题
1. 查看内存
#cat /proc/meminfo MemTotal: 903640 kB //总计物理内存的大小 MemFree: 455024 kB //可用内存有多少 Buffers: 10928 kB //磁盘缓存内存的大小 Cached: 189004 kB SwapCached: 0 kB Active: 184708 kB Inactive: 158564 kB Active(anon): 143364 kB Inactive(anon): 244 kB Active(file): 41344 kB Inactive(file): 158320 kB Unevictable: 0 kB Mlocked: 0 kB HighTotal: 155648 kB HighFree: 304 kB LowTotal: 747992 kB LowFree: 454720 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 0 kB Writeback: 0 kB AnonPages: 143332 kB Mapped: 61624 kB Shmem: 276 kB Slab: 12776 kB SReclaimable: 5040 kB SUnreclaim: 7736 kB KernelStack: 5128 kB PageTables: 9012 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 451820 kB Committed_AS: 7976472 kB VmallocTotal: 122880 kB VmallocUsed: 49792 kB VmallocChunk: 46020 kB
2. 查看进程信息,能够实时显示系统中各个进程的资源占用状况,类似于 Windows 的任务管理器
#top -n 1 -d 1 -m 30 -t User 13%, System 10%, IOW 0%, IRQ 0% User 22 + Nice 9 + Sys 24 + Idle 170 + IOW 0 + IRQ 0 + SIRQ 1 = 226 PID TID PR CPU% S VSS RSS PCY UID Thread Proc 1762 1762 0 5% R 1264K 664K root top top 1323 1340 0 3% S 676928K 43096K bg u0_a55 MMHandlerThread com.tencent.mm 9 9 1 2% S 0K 0K root ksoftirqd/1 1323 1325 0 1% S 676928K 43096K bg u0_a55 GC com.tencent.mm 583 737 1 0% S 667232K 30480K fg u0_a44 droid.phasebeam com.android.phasebeam 298 326 1 0% S 728032K 45172K fg system ActivityManager system_server 298 321 0 0% S 728032K 45172K fg system SensorService system_server 960 960 0 0% S 661188K 33004K fg u0_a55 tencent.mm:push com.tencent.mm:push 843 843 1 0% S 660692K 38672K fg u0_a52 ndroid.systemui com.android.systemui 84 250 1 0% S 62188K 5688K fg system VSyncThread /system/bin/surfaceflinger 583 749 1 0% S 667232K 30480K fg u0_a44 droid.phasebeam com.android.phasebeam 960 984 0 0% S 661188K 33004K fg u0_a55 MMHandlerThread com.tencent.mm:push 22 22 0 0% S 0K 0K root kinteractiveup 84 84 1 0% S 62188K 5688K fg system surfaceflinger /system/bin/surfaceflinger 84 253 1 0% S 62188K 5688K fg system Binder_1 /system/bin/surfaceflinger 1143 1528 0 0% S 665552K 33132K bg u0_a23 AirPlayServer com.waxrain.airplayer 84 245 1 0% S 62188K 5688K fg system SurfaceFlinger /system/bin/surfaceflinger 53 53 0 0% S 0K 0K root rknand_buffer 1323 1323 0 0% S 676928K 43096K bg u0_a55 com.tencent.mm com.tencent.mm 298 637 0 0% S 728032K 45172K fg system Binder_4 system_server 298 647 0 0% S 728032K 45172K fg system Binder_5 system_server 1323 1330 0 0% S 676928K 43096K bg u0_a55 Compiler com.tencent.mm 84 864 0 0% S 62188K 5688K fg system Binder_3 /system/bin/surfaceflinger 298 304 1 0% S 728032K 45172K fg system Compiler system_server 3 3 0 0% S 0K 0K root ksoftirqd/0 1323 1335 0 0% S 676928K 43096K fg u0_a55 Binder_2 com.tencent.mm 51 51 0 0% S 0K 0K root binder 52 52 0 0% S 352K 184K root ueventd /sbin/ueventd 54 54 1 0% S 0K 0K root mtdblock0 55 55 1 0% S 0K 0K root mtdblock1
3. 虚拟内存的查看,目前还看不懂
#cat /proc/vmstat nr_free_pages 112977 nr_inactive_anon 61 nr_active_anon 36183 nr_inactive_file 39628 nr_active_file 10351 nr_unevictable 0 nr_mlock 0 nr_anon_pages 36180 nr_mapped 15427 nr_file_pages 50046 nr_dirty 0 nr_writeback 0 nr_slab_reclaimable 1455 nr_slab_unreclaimable 2005 nr_page_table_pages 2281 nr_kernel_stack 689 nr_unstable 0 nr_bounce 0 nr_vmscan_write 0 nr_writeback_temp 0 nr_isolated_anon 0 nr_isolated_file 0 nr_shmem 69 nr_dirtied 5665 nr_written 5413 nr_anon_transparent_hugepages 0 nr_dirty_threshold 26869 nr_dirty_background_threshold 6717 pgpgin 197593 pgpgout 26455 pswpin 0 pswpout 0 pgalloc_normal 389068 pgalloc_high 61026 pgalloc_movable 0 pgfree 563265 pgactivate 10977 pgdeactivate 0 pgfault 450191 pgmajfault 1011 pgrefill_normal 0 pgrefill_high 0 pgrefill_movable 0 pgsteal_normal 0 pgsteal_high 0 pgsteal_movable 0 pgscan_kswapd_normal 0 pgscan_kswapd_high 0 pgscan_kswapd_movable 0 pgscan_direct_normal 0 pgscan_direct_high 0 pgscan_direct_movable 0 pginodesteal 0 slabs_scanned 0 kswapd_steal 0 kswapd_inodesteal 0 kswapd_low_wmark_hit_quickly 0 kswapd_high_wmark_hit_quickly 0 kswapd_skip_congestion_wait 0 pageoutrun 1 allocstall 0 pgrotated 0 compact_blocks_moved 0 compact_pages_moved 0 compact_pagemigrate_failed 0 compact_stall 0 compact_fail 0 compact_success 0 unevictable_pgs_culled 0 unevictable_pgs_scanned 0 unevictable_pgs_rescued 0 unevictable_pgs_mlocked 0 unevictable_pgs_munlocked 0 unevictable_pgs_cleared 0 unevictable_pgs_stranded 0 unevictable_pgs_mlockfreed 0
4. 虚拟机信息,包括进程的,线程的跟踪信息,这是用来跟踪进程和线程具体点的好地方 。
导出到当前目录 adb pull /data/anr/traces.txt .
二、分析log
1. 查找关键字
通过查找:"null" "error" " "E/","Fatal","NullPointerException","Build fingerprint:","exception","anr","DexOpt"等的错误信息,来定位问题
1)空指针问题
NullPointerException: 这个直接找到java代码,首先分析为什么会是空指针,如果逻辑上没有问题,加上一个判断就可以,也就是说如果为空的时候再次赋值或者直接返回
2).没有捕获异常问题
Exception:
能捕获的话捕获
3)ANR问题
anr:要分析原因了,看看什么导致的,然后优化代码
例子
I/dalvikvm( 1014): Wrote stack traces to '/data/anr/traces.txt' I/Process ( 957): Sending signal. PID: 1124 SIG: 9 E/ActivityManager( 957): ANR in com.ipanel.join.appstore E/ActivityManager( 957): Reason: Broadcast of Intent { act=android.appwidget.action.APPWIDGET_UPDATE cmp=com.ipanel.join.appstore/.widget.SmallWidget1 (has extras) } E/ActivityManager( 957): Load: 1.57 / 0.38 / 0.13 E/ActivityManager( 957): CPU usage from 6290ms to 0ms ago: E/ActivityManager( 957): 70% 957/system_server: 1.1% user + 69% kernel / faults: 204 minor E/ActivityManager( 957): 8.7% 1014/com.ipanel.join.home.jelly: 7.7% user + 0.9% kernel / faults: 899 minor E/ActivityManager( 957): 0.3% 687/yaffs-bg-1: 0% user + 0.3% kernel E/ActivityManager( 957): 0.3% 688/yaffs-bg-1: 0% user + 0.3% kernel E/ActivityManager( 957): 0.3% 935/irkeyservice: 0% user + 0.3% kernel E/ActivityManager( 957): 0% 890/galcore daemon : 0% user + 0% kernel E/ActivityManager( 957): 0.1% 1076/com.ipanel.join.browser: 0.1% user + 0% kernel E/ActivityManager( 957): 0.1% 1124/com.ipanel.join.appstore: 0.1% user + 0% kernel E/ActivityManager( 957): 75% TOTAL: 4.7% user + 70% kernel E/ActivityManager( 957): CPU usage from 622ms to 1169ms later: E/ActivityManager( 957): 71% 957/system_server: 0% user + 71% kernel / faults: 2 minor E/ActivityManager( 957): 67% 965/SurfaceFlinger: 0% user + 67% kernel E/ActivityManager( 957): 1.9% 973/ActivityManager: 1.9% user + 0% kernel E/ActivityManager( 957): 1.9% 991/CursorMove: 0% user + 1.9% kernel E/ActivityManager( 957): 7.6% 1014/com.ipanel.join.home.jelly: 7.6% user + 0% kernel / faults: 31 minor E/ActivityManager( 957): 5.7% 1119/Thread-13: 5.7% user + 0% kernel E/ActivityManager( 957): 1.9% 1123/Thread-13: 1.9% user + 0% kernel E/ActivityManager( 957): 76% TOTAL: 1.8% user + 72% kernel + 1.8% softirq
指定哪个java包出问题
E/ActivityManager( 957): ANR in com.ipanel.join.appstore
进程号为957发生了如下错误:com.ipanel.join.appstore 包下面 Broadcast问题
ANR原因:
E/ActivityManager( 957): Reason: Broadcast of Intent { act=android.appwidget.action.APPWIDGET_UPDATE cmp=com.ipanel.join.appstore/.widget.SmallWidget1 (has extras) }
这是ANR的堆栈调用文件
I/dalvikvm( 1014): Wrote stack traces to '/data/anr/traces.txt'
通过上面的log信息分析,应该是接收一个广播消息时超时了
我们再分析虚拟机信息 ,打开/data/anr/traces.txt,可有通过adb pull /data/anr/traces.txt .
这里每一段都是一个线程 ,当然我们还是看线程号为1的主线程了。通过分析发现关键问题是这样:
搜索“DALVIK THREADS”关键词,快速定位到本应用程序的虚拟机信息日志
----- pid 1516 at 1970-01-02 08:03:07 ----- Cmd line: com.ipanel.join.appstore 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=0x4001f188 self=0xd028 | sysTid=1516 nice=0 sched=3/0 cgrp=[fopen-error:2] handle=-1345017744 at org.apache.harmony.luni.platform.OSNetworkSystem.connect(Native Method) at dalvik.system.BlockGuard$WrappedNetworkSystem.connect(BlockGuard.java:357) at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:204) at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:437) at java.net.Socket.connect(Socket.java:983) at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:74) at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:48) at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection$Address.connect(HttpConnection.java:298) at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:89) at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHttpConnection(HttpURLConnectionImpl.java:285) at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.makeConnection(HttpURLConnectionImpl.java:267) at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.retrieveResponse(HttpURLConnectionImpl.java:1018) at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:726) at com.ipanel.join.appstore.http.DefaultHttpRequest.doGet(DefaultHttpRequest.java:35) at com.ipanel.join.appstore.widget.AbsSmallWidget.requestApps(AbsSmallWidget.java:117) at com.ipanel.join.appstore.widget.AbsSmallWidget.getRemoteViews(AbsSmallWidget.java:56)
其实从这句话:
at org.apache.harmony.luni.platform.OSNetworkSystem.connect(Native Method)
基本上确认是 socket ->connect 连接超时了,导致主线程5s内没有响应从而产生ANR错误。默认的connect连接timeout时间是75s
其实解决办法就是利用非阻塞方式进行连接即可。
从CPU占用率上也可以看出是在kernel中执行堵塞住了
E/ActivityManager( 957): 75% TOTAL: 4.7% user + 70% kernel
4)Fatal问题
Fatal: 比较严重了,很多都很动态库和空指针有关,一般会接下来打印"Build fingerprint:"或”NullPointerException“
5)动态库问题
Build fingerprint:
动态库的问题,如何调试,还在学习中。。。
Log:
05-30 15:07:40.559: A/libc(623): Fatal signal 11 (SIGSEGV) at 0x00000014 (code=1), thread 1000 (Binder_5) 05-30 15:07:40.609: I/DEBUG(85): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 05-30 15:07:40.609: I/DEBUG(85): Build fingerprint: 'unknown' 05-30 15:07:40.609: I/DEBUG(85): pid: 623, tid: 1000, name: Binder_5 >>> system_server <<< 05-30 15:07:40.609: I/DEBUG(85): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000014 05-30 15:07:40.679: I/DEBUG(85): r0 00000000 r1 649661d6 r2 6d12fc30 r3 00000001 05-30 15:07:40.679: I/DEBUG(85): r4 6740e3d0 r5 00000000 r6 6d12fc30 r7 6740e3d0 05-30 15:07:40.679: I/DEBUG(85): r8 00000001 r9 400aff10 sl 6740e3c8 fp 00000001 05-30 15:07:40.679: I/DEBUG(85): ip 00000000 sp 6d12fbe8 lr 40054dff pc 40054e0a cpsr 60000030 05-30 15:07:40.679: I/DEBUG(85): d0 3f8000003f800000 d1 11111111c1c00000 05-30 15:07:40.679: I/DEBUG(85): d2 1a1a1a1a1a1a1a1a d3 ffffffffffffffff 05-30 15:07:40.679: I/DEBUG(85): d4 0808080808080808 d5 1111111111111111 05-30 15:07:40.679: I/DEBUG(85): d6 000000001a1a1a1a d7 0000000000000000 05-30 15:07:40.679: I/DEBUG(85): d8 0000000000000000 d9 0000000000000000 05-30 15:07:40.679: I/DEBUG(85): d10 0000000000000000 d11 0000000000000000 05-30 15:07:40.679: I/DEBUG(85): d12 0000000000000000 d13 0000000000000000 05-30 15:07:40.679: I/DEBUG(85): d14 0000000000000000 d15 0000000000000000 05-30 15:07:40.679: I/DEBUG(85): d16 000000000bebc200 d17 0000000000000000 05-30 15:07:40.679: I/DEBUG(85): d18 0000000000000000 d19 0000000000000000 05-30 15:07:40.679: I/DEBUG(85): d20 0808080808080808 d21 1111111111111111 05-30 15:07:40.679: I/DEBUG(85): d22 1a1a1a1a1a1a1a1a d23 ffffffffffffffff 05-30 15:07:40.679: I/DEBUG(85): d24 0808080808080808 d25 1111111111111111 05-30 15:07:40.679: I/DEBUG(85): d26 1a1a1a1a1a1a1a1a d27 ffffffffffffffff 05-30 15:07:40.679: I/DEBUG(85): d28 0100010001000100 d29 0100010001000100 05-30 15:07:40.679: I/DEBUG(85): d30 0000000000000000 d31 0000000000000000 05-30 15:07:40.679: I/DEBUG(85): scr 60000010 05-30 15:07:40.689: I/DEBUG(85): backtrace: 05-30 15:07:40.689: I/DEBUG(85): #00 pc 00011e0a /system/lib/libutils.so (android::VectorImpl::insertAt(void const*, unsigned int, unsigned int)+37) 05-30 15:07:40.689: I/DEBUG(85): #01 pc 0001205b /system/lib/libutils.so (android::SortedVectorImpl::add(void const*)+26) 05-30 15:07:40.689: I/DEBUG(85): #02 pc 0000dbdb /system/lib/libsensorservice.so (android::SensorDevice::activate(void*, int, int)+122) 05-30 15:07:40.689: I/DEBUG(85): #03 pc 0000e1cf /system/lib/libsensorservice.so (android::SensorFusion::activate(void*, bool)+98) 05-30 15:07:40.689: I/DEBUG(85): #04 pc 000101df /system/lib/libsensorservice.so (android::SensorService::enable(android::sp<android::SensorService::SensorEventConnection> const&, int)+68) 05-30 15:07:40.689: I/DEBUG(85): #05 pc 000102ef /system/lib/libsensorservice.so (android::SensorService::SensorEventConnection::enableDisable(int, bool)+24) 05-30 15:07:40.689: I/DEBUG(85): #06 pc 0001d1c5 /system/lib/libgui.so (android::BnSensorEventConnection::onTransact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+108) 05-30 15:07:40.689: I/DEBUG(85): #07 pc 00016e4d /system/lib/libbinder.so (android::BBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+60) 05-30 15:07:40.689: I/DEBUG(85): #08 pc 00019a29 /system/lib/libbinder.so (android::IPCThreadState::executeCommand(int)+520) 05-30 15:07:40.689: I/DEBUG(85): #09 pc 00019e51 /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+184) 05-30 15:07:40.689: I/DEBUG(85): #10 pc 0001e829 /system/lib/libbinder.so 05-30 15:07:40.689: I/DEBUG(85): #11 pc 00010f47 /system/lib/libutils.so (android::Thread::_threadLoop(void*)+114) 05-30 15:07:40.689: I/DEBUG(85): #12 pc 00046af3 /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+66) 05-30 15:07:40.689: I/DEBUG(85): #13 pc 00010aad /system/lib/libutils.so 05-30 15:07:40.689: I/DEBUG(85): #14 pc 00012b70 /system/lib/libc.so (__thread_entry+48) 05-30 15:07:40.689: I/DEBUG(85): #15 pc 000122c8 /system/lib/libc.so (pthread_create+172)
arm-eabi-addr2line这个工具通过库的trace来跟踪代码的,这个工具位于Android\prebuilt\linux-x86\toolchain\arm-eabi-4.4.3\binarm-eabi-addr2line, "source built/envsetup.sh"可以将这个工具加入到全局
查找:
lijinwei@softser30-15:~/RK4_1_B07_BRH/out/target/product/rk30sdk_joyplus/obj/SHARED_LIBRARIES/libutils_intermediates/LINKED$ arm-eabi-addr2line 00011e0a -e libutils.so /home/lijinwei/RK4_1_B07_BRH/frameworks/native/libs/utils/VectorImpl.cpp:476 lijinwei@softser30-15:~/RK4_1_B07_BRH/out/target/product/rk30sdk_joyplus/obj/SHARED_LIBRARIES/libsensorservice_intermediates/LINKED$ ls libsensorservice.so lijinwei@softser30-15:~/RK4_1_B07_BRH/out/target/product/rk30sdk_joyplus/obj/SHARED_LIBRARIES/libsensorservice_intermediates/LINKED$ arm-eabi-addr2line 0000dbdb -e libsensorservice.so /home/lijinwei/RK4_1_B07_BRH/frameworks/native/include/utils/SortedVector.h:211 template<class TYPE> inline ssize_t SortedVector<TYPE>::add(const TYPE& item) { return SortedVectorImpl::add(&item); } lijinwei@softser30-15:~/RK4_1_B07_BRH/out/target/product/rk30sdk_joyplus/obj/SHARED_LIBRARIES/libsensorservice_intermediates/LINKED$ arm-eabi-addr2line 0000e1cf -e libsensorservice.so /home/lijinwei/RK4_1_B07_BRH/frameworks/base/services/sensorservice/SensorFusion.cpp:95 mSensorDevice.activate(ident, mMag.getHandle(), enabled); lijinwei@softser30-15:~/RK4_1_B07_BRH/out/target/product/rk30sdk_joyplus/obj/SHARED_LIBRARIES/libsensorservice_intermediates/LINKED$ arm-eabi-addr2line 000101df -e libsensorservice.so /home/lijinwei/RK4_1_B07_BRH/frameworks/base/services/sensorservice/SensorService.cpp:413 status_t SensorService::enable(const sp<SensorEventConnection>& connection, int handle) { if (mInitCheck != NO_ERROR) return mInitCheck; Mutex::Autolock _l(mLock); SensorInterface* sensor = mSensorMap.valueFor(handle); status_t err = sensor ? sensor->activate(connection.get(), true) : status_t(BAD_VALUE); ... } lijinwei@softser30-15:~/RK4_1_B07_BRH/out/target/product/rk30sdk_joyplus/obj/SHARED_LIBRARIES/libsensorservice_intermediates/LINKED$ arm-eabi-addr2line 000102ef -e libsensorservice.so /home/lijinwei/RK4_1_B07_BRH/frameworks/base/services/sensorservice/SensorService.cpp:622 status_t SensorService::SensorEventConnection::enableDisable( int handle, bool enabled) { status_t err; if (enabled) { err = mService->enable(this, handle); } else { err = mService->disable(this, handle); } return err; } lijinwei@softser30-15:~/RK4_1_B07_BRH/out/target/product/rk30sdk_joyplus/obj/SHARED_LIBRARIES/libgui_intermediates/LINKED$ arm-eabi-addr2line 0001d1c5 -e libgui.so /home/lijinwei/RK4_1_B07_BRH/frameworks/native/libs/gui/ISensorEventConnection.cpp:94 status_t BnSensorEventConnection::onTransact( uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags) { switch(code) { case GET_SENSOR_CHANNEL: { CHECK_INTERFACE(ISensorEventConnection, data, reply); sp<BitTube> channel(getSensorChannel()); channel->writeToParcel(reply); return NO_ERROR; } break; case ENABLE_DISABLE: { CHECK_INTERFACE(ISensorEventConnection, data, reply); int handle = data.readInt32(); int enabled = data.readInt32(); status_t result = enableDisable(handle, enabled);
可以知道是sensorservice在调enable的时候出现了问题,具体原因还得看sensorservice的管理机制,总之能定位到问题出现的地方了。
6)执行DexOpt错误
DexOpt:解压或优化extract+optimize DEX出的问题
W/dalvikvm( 1803): DexOpt: --- END 'SettingsProvider.apk' --- status=0x000a, process failed E/dalvikvm( 1803): Unable to extract+optimize DEX from '/system/app/SettingsProvider.apk' E/SystemServer( 1803): Failure starting Input Manager Service E/SystemServer( 1803): java.lang.RuntimeException: Unable to get provider com.android.providers.settings.SettingsProvider: java.lang.ClassNotFoundException: com.android.providers.settings.SettingsProvider in loader dalvik.system.PathClassLoader[/system/app/SettingsProvider.apk] E/SystemServer( 1803): at android.app.ActivityThread.installProvider(ActivityThread.java:3557) E/SystemServer( 1803): at android.app.ActivityThread.getProvider(ActivityThread.java:3356)从上面的打印看,是在解压或优化extract+optimize DEX的apk文件时出错了
I、没有出现magic number错误,这个原因与原子操作无关(这是一快速的加锁和解锁的轻量级操作函数)
II、执行dexopt出错,查明是服务器硬盘没空间了,导致引导文件系统的时候没有空间进行解压而失败
2.系统启动后默认其妙或随机死机情况
出现这种错误:
12-01 08:11:56.027: WARN/SharedBufferStack(312): waitForCondition(LockCondition) timed out (identity=19, status=0). CPU may be pegged. trying again. 12-01 08:11:57.315: WARN/SharedBufferStack(312): waitForCondition(LockCondition) timed out (identity=19, status=0). CPU may be pegged. trying again. 12-01 08:11:59.318: WARN/SharedBufferStack(312): waitForCondition(LockCondition) timed out (identity=19, status=0). CPU may be pegged. trying again. 12-01 08:12:03.332: WARN/SharedBufferStack(312): waitForCondition(LockCondition) timed out (identity=19, status=0). CPU may be pegged. trying again. 12-01 08:12:05.329: WARN/SharedBufferStack(312): waitForCondition(LockCondition) timed out (identity=19, status=0). CPU may be pegged. trying again. 12-01 08:12:07.216: WARN/KeyCharacterMap(312): No keyboard for id 0 12-01 08:12:07.216: WARN/KeyCharacterMap(312): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
查看内存: cat /proc/meminfo 发现空闲内存只剩下几M空间了。
请加大android系统的内存即可解决问题
相关文章推荐
- 从log中分析Android wif连接状态的方法
- android toolbox 中log 工具源码分析
- Android的Log分析
- [转]android 常见死机问题--log分析
- Android中对Log日志文件的分析
- Android中对Log日志文件的分析
- android 常见死机问题--log分析
- Android Native/Tombstone Crash Log 详细分析(转)
- Android 中Log. ..用法及分析
- Android Tombstone/Crash的log分析和定位
- Android Tombstone/Crash的log分析和定位
- Android中对Log日志文件的分析
- Android Tombstone/Crash的log分析和定位
- Android中对Log日志文件的分析
- Android - Tombstone crash + Android Tombstone/Crash的log分析和定位
- Android Native Crash的log分析和定位
- android 常见死机问题--log分析
- Android Tombstone/Crash的log分析和定位
- Android Tombstone/Crash的log分析和定位
- Android 分析log