热门标签 | 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系统的内存即可解决问题
推荐阅读
  • 在Android应用开发中,实现与MySQL数据库的连接是一项重要的技术任务。本文详细介绍了Android连接MySQL数据库的操作流程和技术要点。首先,Android平台提供了SQLiteOpenHelper类作为数据库辅助工具,用于创建或打开数据库。开发者可以通过继承并扩展该类,实现对数据库的初始化和版本管理。此外,文章还探讨了使用第三方库如Retrofit或Volley进行网络请求,以及如何通过JSON格式交换数据,确保与MySQL服务器的高效通信。 ... [详细]
  • 本文深入探讨了Java多线程环境下的同步机制及其应用,重点介绍了`synchronized`关键字的使用方法和原理。`synchronized`关键字主要用于确保多个线程在访问共享资源时的互斥性和原子性。通过具体示例,如在一个类中使用`synchronized`修饰方法,展示了如何实现线程安全的代码块。此外,文章还讨论了`ReentrantLock`等其他同步工具的优缺点,并提供了实际应用场景中的最佳实践。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • Unity3D 中 AsyncOperation 实现异步场景加载及进度显示优化技巧
    在Unity3D中,通过使用`AsyncOperation`可以实现高效的异步场景加载,并结合进度条显示来提升用户体验。本文详细介绍了如何利用`AsyncOperation`进行异步加载,并提供了优化技巧,包括进度条的动态更新和加载过程中的性能优化方法。此外,还探讨了如何处理加载过程中可能出现的异常情况,确保加载过程的稳定性和可靠性。 ... [详细]
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
  • 本文探讨了如何利用Java代码获取当前本地操作系统中正在运行的进程列表及其详细信息。通过引入必要的包和类,开发者可以轻松地实现这一功能,为系统监控和管理提供有力支持。示例代码展示了具体实现方法,适用于需要了解系统进程状态的开发人员。 ... [详细]
  • 在探讨Hibernate框架的高级特性时,缓存机制和懒加载策略是提升数据操作效率的关键要素。缓存策略能够显著减少数据库访问次数,从而提高应用性能,特别是在处理频繁访问的数据时。Hibernate提供了多层次的缓存支持,包括一级缓存和二级缓存,以满足不同场景下的需求。懒加载策略则通过按需加载关联对象,进一步优化了资源利用和响应时间。本文将深入分析这些机制的实现原理及其最佳实践。 ... [详细]
  • AIX编程挑战赛:AIX正方形问题的算法解析与Java代码实现
    在昨晚的阅读中,我注意到了CSDN博主西部阿呆-小草屋发表的一篇文章《AIX程序设计大赛——AIX正方形问题》。该文详细阐述了AIX正方形问题的背景,并提供了一种基于Java语言的解决方案。本文将深入解析这一算法的核心思想,并展示具体的Java代码实现,旨在为参赛者和编程爱好者提供有价值的参考。 ... [详细]
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
  • 本文深入探讨了如何利用Maven高效管理项目中的外部依赖库。通过介绍Maven的官方依赖搜索地址(),详细讲解了依赖库的添加、版本管理和冲突解决等关键操作。此外,还提供了实用的配置示例和最佳实践,帮助开发者优化项目构建流程,提高开发效率。 ... [详细]
  • 在PHP中实现腾讯云接口签名,以完成人脸核身功能的对接与签名配置时,需要注意将文档中的POST请求改为GET请求。具体步骤包括:使用你的`secretKey`生成签名字符串`$srcStr`,格式为`GET faceid.tencentcloudapi.com?`,确保参数正确拼接,避免因请求方法错误导致的签名问题。此外,还需关注API的其他参数要求,确保请求的完整性和安全性。 ... [详细]
  • 如何利用Java 5 Executor框架高效构建和管理线程池
    Java 5 引入了 Executor 框架,为开发人员提供了一种高效管理和构建线程池的方法。该框架通过将任务提交与任务执行分离,简化了多线程编程的复杂性。利用 Executor 框架,开发人员可以更灵活地控制线程的创建、分配和管理,从而提高服务器端应用的性能和响应能力。此外,该框架还提供了多种线程池实现,如固定线程池、缓存线程池和单线程池,以适应不同的应用场景和需求。 ... [详细]
  • 提升Android开发效率:Clean Code的最佳实践与应用
    在Android开发中,提高代码质量和开发效率是至关重要的。本文介绍了如何通过Clean Code的最佳实践来优化Android应用的开发流程。以SQLite数据库操作为例,详细探讨了如何编写高效、可维护的SQL查询语句,并将其结果封装为Java对象。通过遵循这些最佳实践,开发者可以显著提升代码的可读性和可维护性,从而加快开发速度并减少错误。 ... [详细]
  • JavaScript XML操作实用工具类:XmlUtilsJS技巧与应用 ... [详细]
  • 本文深入探讨了 Git 与 SVN 的高效使用技巧,旨在帮助开发者轻松应对版本控制中的各种挑战。通过详细解析两种工具的核心功能与最佳实践,读者将能够更好地掌握版本管理的精髓,提高开发效率。 ... [详细]
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社区 版权所有