常见系统问题分析方法
一 常見日志關鍵字
1.App Crash
FATAL EXCEPTION:
2.System Crash
*** FATAL EXCEPTION IN SYSTEM PROCESS:
574 574 I ServiceManager: service ‘statusbar’ died
574 574 I ServiceManager: service ‘media.player’ died
2314 2314 E Zygote : Exit zygote because system server (2557) has terminated
2314 2314 D AndroidRuntime: >>>>>> START com.android.internal.os.ZygoteInit uid 0 <<<<<<
2960 2960 I SystemServer: Entered the Android system server!
5114 5114 D Zygote : begin preload
5114 5114 I Zygote : Preloading classes…
3.Native Crash
Build fingerprint: ’ Opp/xxx/……:userdebug/test-keys’
4.General Exception:
Exception:
5.log level: ‘V’,‘D’,‘I’,‘W’,‘E’,‘F’,‘A’,‘S’
6.單獨為某個TAG設置日志輸出級別
$ setprop log.tag.XXX S 或 setprop persist.log.tag.XXX S
這會影響 boolean DEBUG = Log.isLoggable(“XXX”, Log.VERBOSE)
7. Dropbox log for non-root device
$ dumpsys dropbox -p
8.logcat all (main,system,events,radio,crash,kernel)
adb logcat -b all
二 ANR
$ grep “ANR in” logcat.txt
10-01 18:13:11.984 4600 4614 E ActivityManager: ANR in com.google.android.youtube
10-01 18:14:31.720 4600 4614 E ActivityManager: ANR in com.google.android.apps.plus
10-01 18:14:31.720 4600 4614 E ActivityManager: PID: 30363
10-01 18:14:31.720 4600 4614 E ActivityManager: Reason: executing service com.google.android.apps.plus/com.google.android.apps.photos.service.PhotosService
10-01 18:14:31.720 4600 4614 E ActivityManager: Load: 35.27 / 23.9 / 16.18
10-01 18:14:31.720 4600 4614 E ActivityManager: CPU usage from 16ms to 21868ms later:
10-01 18:14:31.720 4600 4614 E ActivityManager: 74% 3361/mm-qcamera-daemon: 62% user + 12% kernel / faults: 15276 minor 10 major
10-01 18:14:31.720 4600 4614 E ActivityManager: 41% 4600/system_server: 18% user + 23% kernel / faults: 18597 minor 309 major
10-01 18:14:31.720 4600 4614 E ActivityManager: 32% 27420/com.google.android.GoogleCamera: 24% user + 7.8% kernel / faults: 48374 minor 338 major
10-01 18:14:31.720 4600 4614 E ActivityManager: 16% 130/kswapd0: 0% user + 16% kernel
10-01 18:14:31.720 4600 4614 E ActivityManager: 15% 283/mmcqd/0: 0% user + 15% kernel
10-01 18:14:31.721 4600 4614 I ActivityManager: Killing 30363:com.google.android.apps.plus/u0a206 (adj 0): bg anr
$ grep “am_anr” events.txt
10-01 18:12:49.599 4600 4614 I am_anr : [0,29761,com.google.android.youtube,953695941,executing service com.google.android.youtube/com.google.android.apps.youtube.app.offline.transfer.OfflineTransferService]
10-01 18:14:10.211 4600 4614 I am_anr : [0,30363,com.google.android.apps.plus,953728580,executing service com.google.android.apps.plus/com.google.android.apps.photos.service.PhotosService]
手動觸發ANR
adb shell
ls -l /data/anr
adb pull /data/anr
cat anr/traces*.txt
adb shell
kill -3 pidof system_server
more /data/anr/traces.txt (/data/anr/trace_01)
……
沒有產生/data/anr/trace*日志? 先創建,再kill -3 PID
touch /data/anr/traces.txt
kill -3 PID
more /data/anr/traces.txt
2.1 ANR日志解析
“android.display” prio=5 tid=21 Native
| group=“main” sCount=1 dsCount=0 flags=1 obj=0x13381e58 self=0x707bf30600
| sysTid=20957 nice=-3 cgrp=default sched=0/0 handle=0x7068ff74f0
| state=S schedstat=( 545700310 241734580 1108 ) utm=46 stm=8 core=3 HZ=100
| stack=0x7068ef5000-0x7068ef7000 stackSize=1037KB
nice值越小則優先級越高,范圍-20 ~ 19,此處nice=-3,優先級比較高
schedstat (來自 /proc/xx/schedstat) 括號中的3個數字依次是Running、Runnable、Switch
Running時間:CPU運行的時間,單位ns
Runable時間:RunQueue隊列的等待時間,單位ns
Switch次數:CPU調度切換次數
緊接著的是utm和stm
utm: 該線程在用戶態所執行的時間,單位是jiffies,jiffies定義為sysconf(_SC_CLK_TCK),默認等于10ms
stm: 該線程在內核態所執行的時間,單位是jiffies,默認等于10ms
可見,該線程Running= 545700310 ns,也約等于545 ms; CPU運行時間包括用戶態(utm)和內核態(stm)。
utm + stm = (48 + 6) ×10 ms = 540 ms
utm + stm = schedstat[0]
2.2 查找死鎖
線程 A 在等待線程 B 占用的某些資源,而線程 B 也在等待線程 A 占用的某些資源
“Binder_B” prio=5 tid=73 Blocked
| group=“main” sCount=1 dsCount=0 obj=0x13faa0a0 self=0x95e24800
| sysTid=2016 nice=0 cgrp=default sched=0/0 handle=0x8b68d930
| state=S schedstat=( 9351576559 4141431119 16920 ) utm=819 stm=116 core=1 HZ=100
at com.android.server.pm.UserManagerService.exists(UserManagerService.java:387)
- waiting to lock <0x025f9b02> (a android.util.ArrayMap) held by thread 20
at com.android.server.pm.PackageManagerService.getApplicationInfo(PackageManagerService.java:2848)
at com.android.server.AppOpsService.getOpsRawLocked(AppOpsService.java:881)
at com.android.server.AppOpsService.getOpsLocked(AppOpsService.java:856)
at com.android.server.AppOpsService.noteOperationUnchecked(AppOpsService.java:719) - locked <0x0231885a> (a com.android.server.AppOpsService)
at com.android.server.AppOpsService.noteOperation(AppOpsService.java:713)
at com.android.server.AppOpsService2.getMountMode(AppOpsService.java:260)atcom.android.server.MountService2.getMountMode(AppOpsService.java:260) at com.android.server.MountService2.getMountMode(AppOpsService.java:260)atcom.android.server.MountServiceMountServiceInternalImpl.getExternalStorageMountMode(MountService.java:3416)
at com.android.server.am.ActivityManagerService.startProcessLocked(ActivityManagerService.java:3228)
at com.android.server.am.ActivityManagerService.startProcessLocked(ActivityManagerService.java:3170)
at com.android.server.am.ActivityManagerService.startProcessLocked(ActivityManagerService.java:3059)
at com.android.server.am.BroadcastQueue.processNextBroadcast(BroadcastQueue.java:1070) - locked <0x044d166f> (a com.android.server.am.ActivityManagerService)
at com.android.server.am.ActivityManagerService.finishReceiver(ActivityManagerService.java:16950)
at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:494)
at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2432)
at android.os.Binder.execTransact(Binder.java:453)
“PackageManager” prio=5 tid=20 Blocked
| group=“main” sCount=1 dsCount=0 obj=0x1304f4a0 self=0xa7f43900
| sysTid=1300 nice=10 cgrp=bg_non_interactive sched=0/0 handle=0x9fcf9930
| state=S schedstat=( 26190141996 13612154802 44357 ) utm=2410 stm=209 core=2 HZ=100
| stack=0x9fbf7000-0x9fbf9000 stackSize=1038KB
| held mutexes=
at com.android.server.AppOpsService.noteOperationUnchecked(AppOpsService.java:718) - waiting to lock <0x0231885a> (a com.android.server.AppOpsService) held by thread 73
at com.android.server.AppOpsService.noteOperation(AppOpsService.java:713)
at com.android.server.AppOpsService$2.getMountMode(AppOpsService.java:260)
at com.android.server.AppOpsService2.hasExternalStorage(AppOpsService.java:273)atcom.android.server.MountService2.hasExternalStorage(AppOpsService.java:273) at com.android.server.MountService2.hasExternalStorage(AppOpsService.java:273)atcom.android.server.MountServiceMountServiceInternalImpl.hasExternalStorage(MountService.java:3431)
at com.android.server.MountService.getVolumeList(MountService.java:2609)
at android.os.storage.StorageManager.getVolumeList(StorageManager.java:880)
at android.os.Environment$UserEnvironment.getExternalDirs(Environment.java:83)
at android.os.Environment.isExternalStorageEmulated(Environment.java:708)
at com.android.server.pm.PackageManagerService.isExternalMediaAvailable(PackageManagerService.java:9327)
at com.android.server.pm.PackageManagerService.startCleaningPackages(PackageManagerService.java:9367) - locked <0x025f9b02> (a android.util.ArrayMap)
at com.android.server.pm.PackageManagerServicePackageHandler.doHandleMessage(PackageManagerService.java:1320)atcom.android.server.pm.PackageManagerServicePackageHandler.doHandleMessage(PackageManagerService.java:1320) at com.android.server.pm.PackageManagerServicePackageHandler.doHandleMessage(PackageManagerService.java:1320)atcom.android.server.pm.PackageManagerServicePackageHandler.handleMessage(PackageManagerService.java:1122)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.os.HandlerThread.run(HandlerThread.java:61)
at com.android.server.ServiceThread.run(ServiceThread.java:46)
查看處于focus狀態的 Activity
$ grep “am_focused_activity” bugreport.txt
10-01 18:10:41.409 4600 14112 I am_focused_activity: [0,com.google.android.GoogleCamera/com.android.camera.CameraActivity]
10-01 18:11:17.313 4600 5687 I am_focused_activity: [0,com.google.android.googlequicksearchbox/com.google.android.launcher.GEL]
10-01 18:11:52.747 4600 14113 I am_focused_activity: [0,com.google.android.GoogleCamera/com.android.camera.CameraActivity]
10-01 18:14:07.762 4600 5687 I am_focused_activity: [0,com.google.android.googlequicksearchbox/com.google.android.launcher.GEL]
查看進程啟動事件
$ grep “Start proc” bugreport.txt
10-01 18:09:15.309 4600 4612 I ActivityManager: Start proc 24533:com.metago.astro/u0a240 for broadcast com.metago.astro/com.inmobi.commons.analytics.androidsdk.IMAdTrackerReceiver
10-01 18:09:15.687 4600 14112 I ActivityManager: Start proc 24548:com.google.android.apps.fitness/u0a173 for service com.google.android.apps.fitness/.api.services.ActivityUpsamplingService
10-01 18:09:15.777 4600 6604 I ActivityManager: Start proc 24563:cloudtv.hdwidgets/u0a145 for broadcast cloudtv.hdwidgets/cloudtv.switches.SwitchSystemUpdateReceiver
10-01 18:09:20.574 4600 6604 I ActivityManager: Start proc 24617:com.wageworks.ezreceipts/u0a111 for broadcast com.wageworks.ezreceipts/.ui.managers.IntentReceiver
進程抖動
$ grep -e “am_proc_died” -e “am_proc_start” bugreport.txt
10-01 18:07:06.494 4600 9696 I am_proc_died: [0,20074,com.android.musicfx]
10-01 18:07:06.555 4600 6606 I am_proc_died: [0,31166,com.concur.breeze]
10-01 18:07:06.566 4600 14112 I am_proc_died: [0,18812,com.google.android.apps.fitness]
10-01 18:07:07.018 4600 7513 I am_proc_start: [0,20361,10113,com.sony.playmemories.mobile,broadcast,com.sony.playmemories.mobile/.service.StartupReceiver]
10-01 18:07:07.357 4600 4614 I am_proc_start: [0,20381,10056,com.google.android.talk,service,com.google.android.talk/com.google.android.libraries.hangouts.video.CallService]
10-01 18:07:07.784 4600 4612 I am_proc_start: [0,20402,10190,com.andcreate.app.trafficmonitor:loopback_measure_serivce,service,com.andcreate.app.trafficmonitor/.loopback.LoopbackMeasureService]
10-01 18:07:10.753 4600 5997 I am_proc_start: [0,20450,10097,com.amazon.mShop.android.shopping,broadcast,com.amazon.mShop.android.shopping/com.amazon.identity.auth.device.storage.LambortishClock$ChangeTimestampsBroadcastReceiver]
10-01 18:07:15.267 4600 6605 I am_proc_start: [0,20539,10173,com.google.android.apps.fitness,service,com.google.android.apps.fitness/.api.services.ActivityUpsamplingService]
10-01 18:07:15.985 4600 4612 I am_proc_start: [0,20568,10022,com.android.musicfx,broadcast,com.android.musicfx/.ControlPanelReceiver]
10-01 18:07:16.315 4600 7512 I am_proc_died: [0,20096,com.google.android.GoogleCamera]
4. 廣播
查看歷史廣播
歷史廣播是指已發送的廣播,按時間逆序排列。
summary(摘要)部分用于提供最近 300 個前臺廣播和最近 300 個后臺廣播的概況
dumpsys activity broadcasts
Historical broadcasts summary [foreground]:
#0: act=android.intent.action.SCREEN_ON flg=0x50000010
+1ms dispatch +90ms finish
enq=2015-10-29 17:10:51 disp=2015-10-29 17:10:51 fin=2015-10-29 17:10:51
#1: act=android.intent.action.SCREEN_OFF flg=0x50000010
0 dispatch +60ms finish
enq=2015-10-29 17:10:05 disp=2015-10-29 17:10:05 fin=2015-10-29 17:10:05
…
Historical broadcasts summary [background]:
detail (詳情)部分包含最近50條前臺廣播和最近50條后臺廣播的完整信息,以及每個廣播的接收方,其中:
具有 BroadcastFilter 條目的接收方是在運行時注冊的,并且只會被發送到已在運行的進程。
具有 ResolveInfo 條目的接收方是通過AndroidManifest注冊的,AMS 會為每個ResolveInfo啟動相應進程(如果進程尚未運行)
Historical broadcasts [foreground]:
…
Historical broadcasts [background]:
Historical Broadcast background #0:
…
Historical Broadcast background #5:
BroadcastRecord{18dbb16 u0 android.intent.action.USER_PRESENT} to user 0
Intent { act=android.intent.action.USER_PRESENT flg=0x24000010 }
caller=com.android.systemui 2925:com.android.systemui/u0a27 pid=2925 uid=10027
enqueueClockTime=2015-10-29 17:10:55 dispatchClockTime=2015-10-29 17:10:55
dispatchTime=-2s321ms (0 since enq) finishTime=-2s320ms (+1ms since disp)
Receiver #0: BroadcastFilter{8181cc1 u-1 ReceiverList{5d929a8 902 system/1000/u-1 local:eca4dcb}}
Receiver #1: BroadcastFilter{6371c97 u-1 ReceiverList{2938b16 902 system/1000/u-1 local:840b831}}
…
Receiver #19: BroadcastFilter{93f16b u0 ReceiverList{5c61eba 17016 com.google.android.gm/10079/u0 remote:24083e5}}
Historical Broadcast background #37:
BroadcastRecord{7f6dd6 u0 android.hardware.action.NEW_PICTURE} to user 0
Intent { act=android.hardware.action.NEW_PICTURE dat=content://media/external/images/media/6345 flg=0x10 }
caller=com.google.android.GoogleCamera 32734:com.google.android.GoogleCamera/u0a53 pid=32734 uid=10053
enqueueClockTime=2015-10-29 17:09:48 dispatchClockTime=2015-10-29 17:09:49
dispatchTime=-45s720ms (+399ms since enq) finishTime=-45s701ms (+19ms since disp)
resultTo=null resultCode=0 resultData=null
nextReceiver=4 receiver=null
Receiver #0: ResolveInfo{33d2857 com.google.android.gms/com.google.android.libraries.social.mediamonitor.MediaMonitor m=0x608000}
priority=0 preferredOrder=0 match=0x608000 specificIndex=-1 isDefault=false
ActivityInfo:
name=com.google.android.libraries.social.mediamonitor.MediaMonitor
packageName=com.google.android.gms
enabled=true exported=true processName=com.google.android.gms
…
Receiver #2: ResolveInfo{743f82d com.google.android.apps.photos/com.google.android.libraries.social.mediamonitor.MediaMonitor m=0x608000}
priority=0 preferredOrder=0 match=0x608000 specificIndex=-1 isDefault=false
ActivityInfo:
name=com.google.android.libraries.social.mediamonitor.MediaMonitor
packageName=com.google.android.apps.photos
enabled=true exported=true processName=com.google.android.apps.photos
查看待發送的廣播
Active ordered broadcasts [background]:
Active Ordered Broadcast background #133: // size of queue
…
廣播狀態
dumpsys activity broadcast-stats
ACTIVITY MANAGER BROADCAST STATS STATE (dumpsys activity broadcast-stats)
Current stats (from -2h9m19s395ms to now, +1h33m8s105ms uptime):
android.intent.action.BOOT_COMPLETED:
Number received: 64, skipped: 3
Total dispatch time: +52s221ms, max: +52s221ms
Package null: 1 times
android.intent.action.LOCKED_BOOT_COMPLETED:
Number received: 6, skipped: 0
Total dispatch time: +2s367ms, max: +2s367ms
Package null: 1 times
android.intent.action.SIM_STATE_CHANGED:
Number received: 22, skipped: 0
Total dispatch time: +2s149ms, max: +1s484ms
Package null: 4 times
5. Monitor
monitor競爭日志通常情況下表明系統負載過重,從而導致所有進程都變慢了。
ART 記錄的長時間占用monitor事件:
system.txt:
10-01 18:12:44.343 29761 29914 W art : Long monitor contention event with owner method=void android.database.sqlite.SQLiteClosable.acquireReference() from SQLiteClosable.java:52 waiters=0 for 3.914s
events.txt
10-01 18:12:44.364 29761 29914 I dvm_lock_sample: [com.google.android.youtube,0,pool-3-thread-9,3914,ScheduledTaskMaster.java,138,SQLiteClosable.java,52,100]
/system/core/logcat/event.logtags
dvm_lock_sample (process|3),(main|1|5),(thread|3),(time|1|3),(file|3),(line|1|5),(ownerfile|3),(ownerline|1|5),(sample_percent|1|6)
6. Dex2oat
app下載更新時,編譯可能會在后臺進行編譯,占用大量CPU資源,增加系統負載
09-14 06:27:05.670 2508 2587 E ActivityManager: CPU usage from 0ms to 5857ms later:
09-14 06:27:05.670 2508 2587 E ActivityManager: 84% 5708/dex2oat: 81% user + 2.3% kernel / faults: 3731 minor 1 major
09-14 06:27:05.670 2508 2587 E ActivityManager: 73% 2508/system_server: 21% user + 51% kernel / faults: 10019 minor 28 major
09-14 06:27:05.670 2508 2587 E ActivityManager: 1% 3935/com.android.phone: 0.3% user + 0.6% kernel / faults: 2684 minor 2 major
動態加載jar包
09-14 07:29:20.433 15736 15736 I dex2oat : /system/bin/dex2oat -j4 --dex-file=/data/user/0/com.facebook.katana/app_secondary_program_dex/program-72cef82b591768306676e10161c886b58b34315a308602be.dex.jar --oat-file=/data/user/0/com.facebook.katana/app_secondary_program_dex_opt/program-72cef82b591768306676e10161c886b58b34315a308602be.dex.dex
…
09-14 07:29:25.102 15736 15736 I dex2oat : dex2oat took 4.669s (threads: 4) arena alloc=7MB java alloc=3MB native alloc=29MB free=4MB
7. 日志時間對齊
system.txt
10-03 17:19:52.939 1963 2071 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.google.android.googlequicksearchbox/com.google.android.launcher.GEL (has extras)} from uid 1000 on display 0
events.txt
10-03 17:19:54.279 1963 2071 I am_focused_activity: [0,com.google.android.googlequicksearchbox/com.google.android.launcher.GEL]
內核 (dmesg) 日志采用不同的時間基準,自kernel啟動的時間來標記日志內容(以秒為單位)。
要對照logcat日志時間,可搜索“suspend exit”(退出掛起狀態)和“suspend entry”(進入掛起狀態)消息:
<6>[201640.779997] PM: suspend exit 2015-10-03 19:11:06.646094058 UTC
…
<6>[201644.854315] PM: suspend entry 2015-10-03 19:11:10.720416452 UTC
此外,內核日志使用 UTC 時區,中國在+8區,計算時需要將其+8小時
Android M+(一種更nice的方式):
$ adb logcat -b kernel
05-25 23:03:47.217 0 0 I : Booting Linux on physical CPU 0x0
05-25 23:03:47.217 0 0 I : Linux version 4.4.78 (yanqingzhou@qiku) (gcc version 4.9.x 20150123 (prerelease) (GCC) ) #1 SMP PREEMPT Fri Jun 1 11:58:00 CST 2018
05-25 23:03:47.217 0 0 I Boot CPU: AArch64 Processor [51af8014]
05-25 23:03:47.217 0 0 I Machine : Qualcomm Technologies, Inc. SDM 660 PM660 + PM660L Int. Audio Codec MTP
05-25 23:03:47.217 0 0 I earlycon: Early serial console at MMIO 0xc170000 (options ‘’)
8. Power
event 日志中包含屏幕電源狀態信息,其中 0 表示亮屏,1 表示滅屏,2 表示已鎖屏
$ grep screen_toggled events.txt
10-18 15:05:04.383 992 992 I screen_toggled: 1
10-18 15:05:07.010 992 992 I screen_toggled: 0
10-18 15:23:15.063 992 992 I screen_toggled: 1
10-18 15:23:25.684 992 992 I screen_toggled: 0
10-18 15:36:31.623 992 992 I screen_toggled: 1
10-18 15:36:37.660 3283 3283 I screen_toggled: 2
$ adb shell dumpsys power
Wake Locks: size=1
PARTIAL_WAKE_LOCK ‘AudioMix’ ACQ=-1s875ms (uid=1041)
9. 進程運行時
?dumpsys procstats
包含有關進程及相關服務已運行時長的完整統計信息,搜索 AGGREGATED OVER 以查看最近3小時或24小時的數據,然后搜索 Summary: 以查看進程列表、這些進程已以各種優先級運行的時長,以及它們使用 RAM 的情況
(格式為“最小-平均-最大 PSS”/“最小-平均-最大 USS)
AGGREGATED OVER LAST 24 HOURS:
System memory usage:
…
Per-Package Stats:
Summary:
…
- com.google.android.gms.persistent / u0a13 / v8186448:
TOTAL: 100% (21MB-27MB-40MB/20MB-24MB-38MB over 597)
Top: 51% (22MB-26MB-38MB/21MB-24MB-36MB over 383)
Imp Fg: 49% (21MB-27MB-40MB/20MB-25MB-38MB over 214)
…
Start time: 2015-10-19 09:14:37
Total elapsed time: +1d0h22m7s390ms (partial) libart.so
AGGREGATED OVER LAST 3 HOURS:
System memory usage:
…
Per-Package Stats:
…
Summary: - com.google.android.gms.persistent / u0a13 / v8186448:
TOTAL: 100% (23MB-27MB-32MB/21MB-25MB-29MB over 111)
Top: 61% (23MB-26MB-31MB/21MB-24MB-28MB over 67)
Imp Fg: 39% (23MB-28MB-32MB/21MB-26MB-29MB over 44)
…
Start time: 2015-10-20 06:49:24
Total elapsed time: +2h46m59s736ms (partial) libart.so
?dumpsys activity processes
會列出當前正在運行的所有進程,并按oom_adj得分排序(Android 通過為進程分配oom_adj值來表明進程的重要性,該值可由AMS動態更新),有些進程會顯示導致其運行的更多信息。在以下示例中,以紅色顯示的條目表明 gms.persistent 進程正在以 vis(可見)優先級運行,因為該系統進程已經與NLS綁定。
Process LRU list (sorted by oom_adj, 34 total, non-act at 14, non-svc at 14):
PERS #33: sys F/ /P trm: 0 902:system/1000 (fixed)
PERS #32: pers F/ /P trm: 0 2925:com.android.systemui/u0a27 (fixed)
PERS #31: pers F/ /P trm: 0 3477:com.quicinc.cne.CNEService/1000 (fixed)
PERS #30: pers F/ /P trm: 0 3484:com.android.nfc/1027 (fixed)
PERS #29: pers F/ /P trm: 0 3502:com.qualcomm.qti.rcsbootstraputil/1001 (fixed)
PERS #28: pers F/ /P trm: 0 3534:com.qualcomm.qti.rcsimsbootstraputil/1001 (fixed)
PERS #27: pers F/ /P trm: 0 3553:com.android.phone/1001 (fixed)
Proc #25: psvc F/ /IF trm: 0 4951:com.android.bluetooth/1002 (service)
com.android.bluetooth/.hfp.HeadsetService<=Proc{902:system/1000}
Proc # 0: fore F/A/T trm: 0 3586:com.google.android.googlequicksearchbox/u0a29 (top-activity)
Proc # 5: vis F/ /T trm: 0 3745:com.google.android.gms.persistent/u0a12 (service)
com.google.android.gms/com.google.android.location.network.NetworkLocationService<=Proc{902:system/1000}
Proc # 3: vis F/ /SB trm: 0 3279:com.google.android.gms/u0a12 (service)
com.google.android.gms/.icing.service.IndexService<=Proc{947:com.google.android.googlequicksearchbox:search/u0a29}
Proc # 2: vis F/ /T trm: 0 947:com.google.android.googlequicksearchbox:search/u0a29 (service)
10. 內存
Total PSS by process:
150,067K: com.android.systemui (pid 24873)
100,450K: system (pid 24693)
88,269K: com.android.launcher3 (pid 25719 / activities)
Total PSS by OOM adjustment:
393,551K: Native
53,247K: surfaceflinger (pid 24626)
19,875K: zygote (pid 24629)
14,959K: zygote64 (pid 24628)
100,450K: System
100,450K: system (pid 24693)
226,461K: Persistent
150,067K: com.android.systemui (pid 24873)
24,916K: com.android.phone (pid 25014)
13,239K: Persistent Service
13,239K: com.android.bluetooth (pid 24842)
103,856K: Foreground
Total RAM: 5,834,260K (status normal)
Free RAM: 4,181,193K ( 170,561K cached pss + 1,985,880K cached kernel + 2,024,752K free)
Used RAM: 1,313,146K ( 986,846K used pss + 326,300K kernel)
Lost RAM: 339,921K
Tuning: 256 (large 512), oom 322,560K, restore limit 107,520K (high-end-gfx)
11. 調試 system_server bootup
以userdebug版本為例
adb shell
stop installd (for Android O+ 掛起installd: kill -19 pidof installd)
stop
start
在Android Studio中設置好斷點(比如 PMS.main)
Run -> Attach debugger to Android process
選擇 system_process,Go!
然后最重要的是 (恢復installd執行,讓system_server流程繼續往下走):
start installd (for AndroidO+: kill -18 pidof installd)
總結
以上是生活随笔為你收集整理的常见系统问题分析方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS MRC下的setter方法
- 下一篇: 用废旧纸箱 DIY 智能宠物喂食器!旅行