热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android分析log

一、分析前的准备工作1.查看内存[ruby]viewplaincopy#catprocmeminfoMemTotal:903640kB总计物理内存的大小MemFree:455024
一、分析前的准备工作


1. 查看内存


[ruby] view plaincopy
  1. #cat /proc/meminfo  
  2. MemTotal:         903640 kB //总计物理内存的大小  
  3. MemFree:          455024 kB //可用内存有多少  
  4. Buffers:           10928 kB //磁盘缓存内存的大小  
  5. Cached:           189004 kB  
  6. SwapCached:            0 kB  
  7. Active:           184708 kB  
  8. Inactive:         158564 kB  
  9. Active(anon):     143364 kB  
  10. Inactive(anon):      244 kB  
  11. Active(file):      41344 kB  
  12. Inactive(file):   158320 kB  
  13. Unevictable:           0 kB  
  14. Mlocked:               0 kB  
  15. HighTotal:        155648 kB  
  16. HighFree:            304 kB  
  17. LowTotal:         747992 kB  
  18. LowFree:          454720 kB  
  19. SwapTotal:             0 kB  
  20. SwapFree:              0 kB  
  21. Dirty:                 0 kB  
  22. Writeback:             0 kB  
  23. AnonPages:        143332 kB  
  24. Mapped:            61624 kB  
  25. Shmem:               276 kB  
  26. Slab:              12776 kB  
  27. SReclaimable:       5040 kB  
  28. SUnreclaim:         7736 kB  
  29. KernelStack:        5128 kB  
  30. PageTables:         9012 kB  
  31. NFS_Unstable:          0 kB  
  32. Bounce:                0 kB  
  33. WritebackTmp:          0 kB  
  34. CommitLimit:      451820 kB  
  35. Committed_AS:    7976472 kB  
  36. VmallocTotal:     122880 kB  
  37. VmallocUsed:       49792 kB  
  38. VmallocChunk:      46020 kB  




2. 查看进程信息,能够实时显示系统中各个进程的资源占用状况,类似于 Windows 的任务管理器


[ruby] view plaincopy
  1. #top -n 1 -d 1 -m 30 -t  
  2. User 13%, System 10%, IOW 0%, IRQ 0%  
  3. User 22 + Nice 9 + Sys 24 + Idle 170 + IOW 0 + IRQ 0 + SIRQ 1 = 226  
  4.   
  5.   
  6.   PID   TID PR CPU% S     VSS     RSS PCY UID      Thread          Proc  
  7.  1762  1762  0   5% R   1264K    664K     root     top             top  
  8.  1323  1340  0   3% S 676928K  43096K  bg u0_a55   MMHandlerThread com.tencent.mm  
  9.     9     9  1   2% S      0K      0K     root     ksoftirqd/1  
  10.  1323  1325  0   1% S 676928K  43096K  bg u0_a55   GC              com.tencent.mm  
  11.   583   737  1   0% S 667232K  30480K  fg u0_a44   droid.phasebeam com.android.phasebeam  
  12.   298   326  1   0% S 728032K  45172K  fg system   ActivityManager system_server  
  13.   298   321  0   0% S 728032K  45172K  fg system   SensorService   system_server  
  14.   960   960  0   0% S 661188K  33004K  fg u0_a55   tencent.mm:push com.tencent.mm:push  
  15.   843   843  1   0% S 660692K  38672K  fg u0_a52   ndroid.systemui com.android.systemui  
  16.    84   250  1   0% S  62188K   5688K  fg system   VSyncThread     /system/bin/surfaceflinger  
  17.   583   749  1   0% S 667232K  30480K  fg u0_a44   droid.phasebeam com.android.phasebeam  
  18.   960   984  0   0% S 661188K  33004K  fg u0_a55   MMHandlerThread com.tencent.mm:push  
  19.    22    22  0   0% S      0K      0K     root     kinteractiveup  
  20.    84    84  1   0% S  62188K   5688K  fg system   surfaceflinger  /system/bin/surfaceflinger  
  21.    84   253  1   0% S  62188K   5688K  fg system   Binder_1        /system/bin/surfaceflinger  
  22.  1143  1528  0   0% S 665552K  33132K  bg u0_a23   AirPlayServer   com.waxrain.airplayer  
  23.    84   245  1   0% S  62188K   5688K  fg system   SurfaceFlinger  /system/bin/surfaceflinger  
  24.    53    53  0   0% S      0K      0K     root     rknand_buffer  
  25.  1323  1323  0   0% S 676928K  43096K  bg u0_a55   com.tencent.mm  com.tencent.mm  
  26.   298   637  0   0% S 728032K  45172K  fg system   Binder_4        system_server  
  27.   298   647  0   0% S 728032K  45172K  fg system   Binder_5        system_server  
  28.  1323  1330  0   0% S 676928K  43096K  bg u0_a55   Compiler        com.tencent.mm  
  29.    84   864  0   0% S  62188K   5688K  fg system   Binder_3        /system/bin/surfaceflinger  
  30.   298   304  1   0% S 728032K  45172K  fg system   Compiler        system_server  
  31.     3     3  0   0% S      0K      0K     root     ksoftirqd/0  
  32.  1323  1335  0   0% S 676928K  43096K  fg u0_a55   Binder_2        com.tencent.mm  
  33.    51    51  0   0% S      0K      0K     root     binder  
  34.    52    52  0   0% S    352K    184K     root     ueventd         /sbin/ueventd  
  35.    54    54  1   0% S      0K      0K     root     mtdblock0  
  36.    55    55  1   0% S      0K      0K     root     mtdblock1  




3. 虚拟内存的查看,目前还看不懂


[ruby] view plaincopy
  1. #cat /proc/vmstat  
  2. nr_free_pages 112977  
  3. nr_inactive_anon 61  
  4. nr_active_anon 36183  
  5. nr_inactive_file 39628  
  6. nr_active_file 10351  
  7. nr_unevictable 0  
  8. nr_mlock 0  
  9. nr_anon_pages 36180  
  10. nr_mapped 15427  
  11. nr_file_pages 50046  
  12. nr_dirty 0  
  13. nr_writeback 0  
  14. nr_slab_reclaimable 1455  
  15. nr_slab_unreclaimable 2005  
  16. nr_page_table_pages 2281  
  17. nr_kernel_stack 689  
  18. nr_unstable 0  
  19. nr_bounce 0  
  20. nr_vmscan_write 0  
  21. nr_writeback_temp 0  
  22. nr_isolated_anon 0  
  23. nr_isolated_file 0  
  24. nr_shmem 69  
  25. nr_dirtied 5665  
  26. nr_written 5413  
  27. nr_anon_transparent_hugepages 0  
  28. nr_dirty_threshold 26869  
  29. nr_dirty_background_threshold 6717  
  30. pgpgin 197593  
  31. pgpgout 26455  
  32. pswpin 0  
  33. pswpout 0  
  34. pgalloc_normal 389068  
  35. pgalloc_high 61026  
  36. pgalloc_movable 0  
  37. pgfree 563265  
  38. pgactivate 10977  
  39. pgdeactivate 0  
  40. pgfault 450191  
  41. pgmajfault 1011  
  42. pgrefill_normal 0  
  43. pgrefill_high 0  
  44. pgrefill_movable 0  
  45. pgsteal_normal 0  
  46. pgsteal_high 0  
  47. pgsteal_movable 0  
  48. pgscan_kswapd_normal 0  
  49. pgscan_kswapd_high 0  
  50. pgscan_kswapd_movable 0  
  51. pgscan_direct_normal 0  
  52. pgscan_direct_high 0  
  53. pgscan_direct_movable 0  
  54. pginodesteal 0  
  55. slabs_scanned 0  
  56. kswapd_steal 0  
  57. kswapd_inodesteal 0  
  58. kswapd_low_wmark_hit_quickly 0  
  59. kswapd_high_wmark_hit_quickly 0  
  60. kswapd_skip_congestion_wait 0  
  61. pageoutrun 1  
  62. allocstall 0  
  63. pgrotated 0  
  64. compact_blocks_moved 0  
  65. compact_pages_moved 0  
  66. compact_pagemigrate_failed 0  
  67. compact_stall 0  
  68. compact_fail 0  
  69. compact_success 0  
  70. unevictable_pgs_culled 0  
  71. unevictable_pgs_scanned 0  
  72. unevictable_pgs_rescued 0  
  73. unevictable_pgs_mlocked 0  
  74. unevictable_pgs_munlocked 0  
  75. unevictable_pgs_cleared 0  
  76. unevictable_pgs_stranded 0  
  77. 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:要分析原因了,看看什么导致的,然后优化代码



例子




[ruby] view plaincopy
  1. I/dalvikvm( 1014): Wrote stack traces to '/data/anr/traces.txt'  
  2.  I/Process ( 957): Sending signal. PID: 1124 SIG: 9  
  3.  E/ActivityManager( 957): ANR in com.ipanel.join.appstore  
  4.  E/ActivityManager( 957): Reason: Broadcast of Intent { act=android.appwidget.action.APPWIDGET_UPDATE cmp=com.ipanel.join.appstore/.widget.SmallWidget1 (has extras) }  
  5.  E/ActivityManager( 957): Load: 1.57 / 0.38 / 0.13  
  6.  E/ActivityManager( 957): CPU usage from 6290ms to 0ms ago:  
  7.  E/ActivityManager( 957): 70% 957/system_server: 1.1% user + 69% kernel / faults: 204 minor  
  8.  E/ActivityManager( 957): 8.7% 1014/com.ipanel.join.home.jelly: 7.7% user + 0.9% kernel / faults: 899 minor  
  9.  E/ActivityManager( 957): 0.3% 687/yaffs-bg-1: 0% user + 0.3% kernel  
  10.  E/ActivityManager( 957): 0.3% 688/yaffs-bg-1: 0% user + 0.3% kernel  
  11.  E/ActivityManager( 957): 0.3% 935/irkeyservice: 0% user + 0.3% kernel  
  12.  E/ActivityManager( 957): 0% 890/galcore daemon : 0% user + 0% kernel  
  13.  E/ActivityManager( 957): 0.1% 1076/com.ipanel.join.browser: 0.1% user + 0% kernel  
  14.  E/ActivityManager( 957): 0.1% 1124/com.ipanel.join.appstore: 0.1% user + 0% kernel  
  15.  E/ActivityManager( 957): 75% TOTAL: 4.7% user + 70% kernel  
  16.  E/ActivityManager( 957): CPU usage from 622ms to 1169ms later:  
  17.  E/ActivityManager( 957): 71% 957/system_server: 0% user + 71% kernel / faults: 2 minor  
  18.  E/ActivityManager( 957): 67% 965/SurfaceFlinger: 0% user + 67% kernel  
  19.  E/ActivityManager( 957): 1.9% 973/ActivityManager: 1.9% user + 0% kernel  
  20.  E/ActivityManager( 957): 1.9% 991/CursorMove: 0% user + 1.9% kernel  
  21.  E/ActivityManager( 957): 7.6% 1014/com.ipanel.join.home.jelly: 7.6% user + 0% kernel / faults: 31 minor  
  22.  E/ActivityManager( 957): 5.7% 1119/Thread-13: 5.7% user + 0% kernel  
  23.  E/ActivityManager( 957): 1.9% 1123/Thread-13: 1.9% user + 0% kernel  
  24.  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”关键词,快速定位到本应用程序的虚拟机信息日志


  

[ruby] view plaincopy
  1. ----- pid 1516 at 1970-01-02 08:03:07 -----  
  2.   Cmd line: com.ipanel.join.appstore  
  3.   DALVIK THREADS:  
  4.   (mutexes: tll=0 tsl=0 tscl=0 ghl=0 hwl=0 hwll=0)  
  5.   "main" prio=5 tid=1 NATIVE  
  6.   | group="main" sCount=1 dsCount=0 obj=0x4001f188 self=0xd028  
  7.   | sysTid=1516 nice=0 sched=3/0 cgrp=[fopen-error:2] handle=-1345017744  
  8.   at org.apache.harmony.luni.platform.OSNetworkSystem.connect(Native Method)  
  9.   at dalvik.system.BlockGuard$WrappedNetworkSystem.connect(BlockGuard.java:357)  
  10.   at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:204)  
  11.   at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:437)  
  12.   at java.net.Socket.connect(Socket.java:983)  
  13.   at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.(HttpConnection.java:74)  
  14.   at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.(HttpConnection.java:48)  
  15.   at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection$Address.connect(HttpConnection.java:298)  
  16.   at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:89)  
  17.   at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHttpConnection(HttpURLConnectionImpl.java:285)  
  18.   at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.makeConnection(HttpURLConnectionImpl.java:267)  
  19.   at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.retrieveResponse(HttpURLConnectionImpl.java:1018)  
  20.   at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:726)  
  21.   at com.ipanel.join.appstore.http.DefaultHttpRequest.doGet(DefaultHttpRequest.java:35)  
  22.   at com.ipanel.join.appstore.widget.AbsSmallWidget.requestApps(AbsSmallWidget.java:117)  
  23.   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:




[ruby] view plaincopy
  1. 05-30 15:07:40.559: A/libc(623): Fatal signal 11 (SIGSEGV) at 0x00000014 (code=1), thread 1000 (Binder_5)  
  2.         05-30 15:07:40.609: I/DEBUG(85): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***  
  3.         05-30 15:07:40.609: I/DEBUG(85): Build fingerprint: 'unknown'  
  4.         05-30 15:07:40.609: I/DEBUG(85): pid: 623, tid: 1000, name: Binder_5  >>> system_server <<<  
  5.         05-30 15:07:40.609: I/DEBUG(85): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000014  
  6.         05-30 15:07:40.679: I/DEBUG(85):     r0 00000000  r1 649661d6  r2 6d12fc30  r3 00000001  
  7.         05-30 15:07:40.679: I/DEBUG(85):     r4 6740e3d0  r5 00000000  r6 6d12fc30  r7 6740e3d0  
  8.         05-30 15:07:40.679: I/DEBUG(85):     r8 00000001  r9 400aff10  sl 6740e3c8  fp 00000001  
  9.         05-30 15:07:40.679: I/DEBUG(85):     ip 00000000  sp 6d12fbe8  lr 40054dff  pc 40054e0a  cpsr 60000030  
  10.         05-30 15:07:40.679: I/DEBUG(85):     d0  3f8000003f800000  d1  11111111c1c00000  
  11.         05-30 15:07:40.679: I/DEBUG(85):     d2  1a1a1a1a1a1a1a1a  d3  ffffffffffffffff  
  12.         05-30 15:07:40.679: I/DEBUG(85):     d4  0808080808080808  d5  1111111111111111  
  13.         05-30 15:07:40.679: I/DEBUG(85):     d6  000000001a1a1a1a  d7  0000000000000000  
  14.         05-30 15:07:40.679: I/DEBUG(85):     d8  0000000000000000  d9  0000000000000000  
  15.         05-30 15:07:40.679: I/DEBUG(85):     d10 0000000000000000  d11 0000000000000000  
  16.         05-30 15:07:40.679: I/DEBUG(85):     d12 0000000000000000  d13 0000000000000000  
  17.         05-30 15:07:40.679: I/DEBUG(85):     d14 0000000000000000  d15 0000000000000000  
  18.         05-30 15:07:40.679: I/DEBUG(85):     d16 000000000bebc200  d17 0000000000000000  
  19.         05-30 15:07:40.679: I/DEBUG(85):     d18 0000000000000000  d19 0000000000000000  
  20.         05-30 15:07:40.679: I/DEBUG(85):     d20 0808080808080808  d21 1111111111111111  
  21.         05-30 15:07:40.679: I/DEBUG(85):     d22 1a1a1a1a1a1a1a1a  d23 ffffffffffffffff  
  22.         05-30 15:07:40.679: I/DEBUG(85):     d24 0808080808080808  d25 1111111111111111  
  23.         05-30 15:07:40.679: I/DEBUG(85):     d26 1a1a1a1a1a1a1a1a  d27 ffffffffffffffff  
  24.         05-30 15:07:40.679: I/DEBUG(85):     d28 0100010001000100  d29 0100010001000100  
  25.         05-30 15:07:40.679: I/DEBUG(85):     d30 0000000000000000  d31 0000000000000000  
  26.         05-30 15:07:40.679: I/DEBUG(85):     scr 60000010  
  27.         05-30 15:07:40.689: I/DEBUG(85): backtrace:  
  28.         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)&#43;37)  
  29.         05-30 15:07:40.689: I/DEBUG(85):     #01  pc 0001205b  /system/lib/libutils.so (android::SortedVectorImpl::add(void const*)&#43;26)  
  30.         05-30 15:07:40.689: I/DEBUG(85):     #02  pc 0000dbdb  /system/lib/libsensorservice.so (android::SensorDevice::activate(void*, int, int)&#43;122)  
  31.         05-30 15:07:40.689: I/DEBUG(85):     #03  pc 0000e1cf  /system/lib/libsensorservice.so (android::SensorFusion::activate(void*, bool)&#43;98)  
  32.         05-30 15:07:40.689: I/DEBUG(85):     #04  pc 000101df  /system/lib/libsensorservice.so (android::SensorService::enable(android::sp const&, int)&#43;68)  
  33.         05-30 15:07:40.689: I/DEBUG(85):     #05  pc 000102ef  /system/lib/libsensorservice.so (android::SensorService::SensorEventConnection::enableDisable(int, bool)&#43;24)  
  34.         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)&#43;108)  
  35.         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)&#43;60)  
  36.         05-30 15:07:40.689: I/DEBUG(85):     #08  pc 00019a29  /system/lib/libbinder.so (android::IPCThreadState::executeCommand(int)&#43;520)  
  37.         05-30 15:07:40.689: I/DEBUG(85):     #09  pc 00019e51  /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)&#43;184)  
  38.         05-30 15:07:40.689: I/DEBUG(85):     #10  pc 0001e829  /system/lib/libbinder.so  
  39.         05-30 15:07:40.689: I/DEBUG(85):     #11  pc 00010f47  /system/lib/libutils.so (android::Thread::_threadLoop(void*)&#43;114)  
  40.         05-30 15:07:40.689: I/DEBUG(85):     #12  pc 00046af3  /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)&#43;66)  
  41.         05-30 15:07:40.689: I/DEBUG(85):     #13  pc 00010aad  /system/lib/libutils.so  
  42.         05-30 15:07:40.689: I/DEBUG(85):     #14  pc 00012b70  /system/lib/libc.so (__thread_entry&#43;48)  
  43.         05-30 15:07:40.689: I/DEBUG(85):     #15  pc 000122c8  /system/lib/libc.so (pthread_create&#43;172)  





arm-eabi-addr2line这个工具通过库的trace来跟踪代码的&#xff0c;这个工具位于Android\prebuilt\linux-x86\toolchain\arm-eabi-4.4.3\binarm-eabi-addr2line, "source built/envsetup.sh"可以将这个工具加入到全局





查找&#xff1a;


[java] view plaincopy
  1. lijinwei&#64;softser30-15:~/RK4_1_B07_BRH/out/target/product/rk30sdk_joyplus/obj/SHARED_LIBRARIES/libutils_intermediates/LINKED$ arm-eabi-addr2line 00011e0a -e libutils.so  
  2. /home/lijinwei/RK4_1_B07_BRH/frameworks/native/libs/utils/VectorImpl.cpp:476  
  3.   
  4. lijinwei&#64;softser30-15:~/RK4_1_B07_BRH/out/target/product/rk30sdk_joyplus/obj/SHARED_LIBRARIES/libsensorservice_intermediates/LINKED$ ls  
  5. libsensorservice.so  
  6. lijinwei&#64;softser30-15:~/RK4_1_B07_BRH/out/target/product/rk30sdk_joyplus/obj/SHARED_LIBRARIES/libsensorservice_intermediates/LINKED$ arm-eabi-addr2line 0000dbdb -e libsensorservice.so   
  7. /home/lijinwei/RK4_1_B07_BRH/frameworks/native/include/utils/SortedVector.h:211  
  8. template<class TYPE> inline  
  9. ssize_t SortedVector::add(const TYPE& item) {  
  10.     return SortedVectorImpl::add(&item);  
  11. }  
  12.   
  13. lijinwei&#64;softser30-15:~/RK4_1_B07_BRH/out/target/product/rk30sdk_joyplus/obj/SHARED_LIBRARIES/libsensorservice_intermediates/LINKED$ arm-eabi-addr2line 0000e1cf   -e libsensorservice.so            
  14. /home/lijinwei/RK4_1_B07_BRH/frameworks/base/services/sensorservice/SensorFusion.cpp:95  
  15. mSensorDevice.activate(ident, mMag.getHandle(), enabled);  
  16.   
  17.   
  18. lijinwei&#64;softser30-15:~/RK4_1_B07_BRH/out/target/product/rk30sdk_joyplus/obj/SHARED_LIBRARIES/libsensorservice_intermediates/LINKED$ arm-eabi-addr2line 000101df   -e libsensorservice.so              
  19. /home/lijinwei/RK4_1_B07_BRH/frameworks/base/services/sensorservice/SensorService.cpp:413  
  20. status_t SensorService::enable(const sp& connection,  
  21.         int handle)  
  22. {  
  23.     if (mInitCheck !&#61; NO_ERROR)  
  24.         return mInitCheck;  
  25.   
  26.   
  27.     Mutex::Autolock _l(mLock);  
  28.     SensorInterface* sensor &#61; mSensorMap.valueFor(handle);  
  29.     status_t err &#61; sensor ? sensor->activate(connection.get(), true) : status_t(BAD_VALUE);  
  30. ...  
  31. }  
  32.   
  33. lijinwei&#64;softser30-15:~/RK4_1_B07_BRH/out/target/product/rk30sdk_joyplus/obj/SHARED_LIBRARIES/libsensorservice_intermediates/LINKED$ arm-eabi-addr2line 000102ef  -e libsensorservice.so              
  34. /home/lijinwei/RK4_1_B07_BRH/frameworks/base/services/sensorservice/SensorService.cpp:622  
  35. status_t SensorService::SensorEventConnection::enableDisable(  
  36.         int handle, bool enabled)  
  37. {  
  38.     status_t err;  
  39.     if (enabled) {  
  40.         err &#61; mService->enable(this, handle);  
  41.     } else {  
  42.         err &#61; mService->disable(this, handle);  
  43.     }  
  44.     return err;  
  45. }  
  46.   
  47. lijinwei&#64;softser30-15:~/RK4_1_B07_BRH/out/target/product/rk30sdk_joyplus/obj/SHARED_LIBRARIES/libgui_intermediates/LINKED$ arm-eabi-addr2line 0001d1c5 -e libgui.so   
  48. /home/lijinwei/RK4_1_B07_BRH/frameworks/native/libs/gui/ISensorEventConnection.cpp:94  
  49. status_t BnSensorEventConnection::onTransact(  
  50.     uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)  
  51. {  
  52.     switch(code) {  
  53.         case GET_SENSOR_CHANNEL: {  
  54.             CHECK_INTERFACE(ISensorEventConnection, data, reply);  
  55.             sp channel(getSensorChannel());  
  56.             channel->writeToParcel(reply);  
  57.             return NO_ERROR;  
  58.         } break;  
  59.         case ENABLE_DISABLE: {  
  60.             CHECK_INTERFACE(ISensorEventConnection, data, reply);  
  61.             int handle &#61; data.readInt32();  
  62.             int enabled &#61; data.readInt32();  
  63.             status_t result &#61; enableDisable(handle, enabled);  






   可以知道是sensorservice在调enable的时候出现了问题&#xff0c;具体原因还得看sensorservice的管理机制&#xff0c;总之能定位到问题出现的地方了。         



6)执行DexOpt错误



DexOpt:解压或优化extract&#43;optimize DEX出的问题


[ruby] view plaincopy
  1. W/dalvikvm( 1803): DexOpt: --- END &#39;SettingsProvider.apk&#39; --- status&#61;0x000a, process failed  
  2. E/dalvikvm( 1803): Unable to extract&#43;optimize DEX from &#39;/system/app/SettingsProvider.apk&#39;  
  3. E/SystemServer( 1803): Failure starting Input Manager Service  
  4. 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]  
  5. E/SystemServer( 1803): at android.app.ActivityThread.installProvider(ActivityThread.java:3557)  
  6. E/SystemServer( 1803): at android.app.ActivityThread.getProvider(ActivityThread.java:3356)  


  从上面的打印看&#xff0c;是在解压或优化extract&#43;optimize DEX的apk文件时出错了


  I、没有出现magic number错误&#xff0c;这个原因与原子操作无关(这是一快速的加锁和解锁的轻量级操作函数)


  II、执行dexopt出错,查明是服务器硬盘没空间了&#xff0c;导致引导文件系统的时候没有空间进行解压而失败




2.系统启动后默认其妙或随机死机情况



出现这种错误&#xff1a;


  

[ruby] view plaincopy
  1. 12-01 08:11:56.027: WARN/SharedBufferStack(312): waitForCondition(LockCondition) timed out (identity&#61;19, status&#61;0). CPU may be pegged. trying again.  
  2.   12-01 08:11:57.315: WARN/SharedBufferStack(312): waitForCondition(LockCondition) timed out (identity&#61;19, status&#61;0). CPU may be pegged. trying again.  
  3.   12-01 08:11:59.318: WARN/SharedBufferStack(312): waitForCondition(LockCondition) timed out (identity&#61;19, status&#61;0). CPU may be pegged. trying again.  
  4.   12-01 08:12:03.332: WARN/SharedBufferStack(312): waitForCondition(LockCondition) timed out (identity&#61;19, status&#61;0). CPU may be pegged. trying again.  
  5.   12-01 08:12:05.329: WARN/SharedBufferStack(312): waitForCondition(LockCondition) timed out (identity&#61;19, status&#61;0). CPU may be pegged. trying again.  
  6.   12-01 08:12:07.216: WARN/KeyCharacterMap(312): No keyboard for id 0  
  7.   12-01 08:12:07.216: WARN/KeyCharacterMap(312): Using default keymap: /system/usr/keychars/qwerty.kcm.bin  




  查看内存: cat /proc/meminfo 发现空闲内存只剩下几M空间了。


  请加大android系统的内存即可解决问题
推荐阅读
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • 使用freemaker生成Java代码的步骤及示例代码
    本文介绍了使用freemaker这个jar包生成Java代码的步骤,通过提前编辑好的模板,可以避免写重复代码。首先需要在springboot的pom.xml文件中加入freemaker的依赖包。然后编写模板,定义要生成的Java类的属性和方法。最后编写生成代码的类,通过加载模板文件和数据模型,生成Java代码文件。本文提供了示例代码,并展示了文件目录结构。 ... [详细]
  • 本文介绍了在PostgreSQL中批量导入数据时的优化方法。包括使用unlogged表、删除重建索引、删除重建外键、禁用触发器、使用COPY方法、批量插入等。同时还提到了一些参数优化的注意事项,如设置effective_cache_size、shared_buffer等,并强调了在导入大量数据后使用analyze命令重新收集统计信息的重要性。 ... [详细]
  • 本文介绍了使用C++Builder实现获取USB优盘序列号的方法,包括相关的代码和说明。通过该方法,可以获取指定盘符的USB优盘序列号,并将其存放在缓冲中。该方法可以在Windows系统中有效地获取USB优盘序列号,并且适用于C++Builder开发环境。 ... [详细]
  • tcpdump 4.5.1 crash 深入分析
    tcpdump 4.5.1 crash 深入分析 ... [详细]
author-avatar
福田商务汽车-日照方傲
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有