日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

常见系统问题分析方法

發布時間:2024/3/12 windows 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常见系统问题分析方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一 常見日志關鍵字

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)
  • Activity
    查看處于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)

    總結

    以上是生活随笔為你收集整理的常见系统问题分析方法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。