Android 分析log

一、分析前的准备工作
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系统的内存即可解决问题
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值