Qual è lo strumento "dumpsys" della shell Android ADB e quali sono i suoi vantaggi?


140

Sto cercando l'elenco completo dei dumpsyscomandi della shell ADB con una spiegazione completa di tutti i comandi.

Dove posso trovare queste informazioni?

Risposte:


247

Che cos'è la discarica e quali sono i suoi benefici

dumpsys è uno strumento Android che viene eseguito sul dispositivo e scarica informazioni interessanti sullo stato dei servizi di sistema.

Benefici evidenti:

  1. Possibilità di ottenere facilmente informazioni di sistema in una semplice rappresentazione di stringhe.
  2. Possibilità di utilizzare CPU, RAM, batteria, statistiche di archiviazione scaricate per un bel grafico, che ti permetterà di verificare come la tua applicazione influisce sul dispositivo complessivo!

Quali informazioni possiamo recuperare dal comando shell di dumpsys e come possiamo usarle

Se esegui dumpsys vedresti un sacco di informazioni di sistema. Ma puoi usare solo parti separate di questa grande discarica.

per vedere tutti i "sottocomandi" di dumpsys fare:

dumpsys | grep "DUMP OF SERVICE"

Produzione:

DUMP OF SERVICE SurfaceFlinger:
DUMP OF SERVICE accessibility:
DUMP OF SERVICE account:
DUMP OF SERVICE activity:
DUMP OF SERVICE alarm:
DUMP OF SERVICE appwidget:
DUMP OF SERVICE audio:
DUMP OF SERVICE backup:
DUMP OF SERVICE battery:
DUMP OF SERVICE batteryinfo:
DUMP OF SERVICE clipboard:
DUMP OF SERVICE connectivity:
DUMP OF SERVICE content:
DUMP OF SERVICE cpuinfo:
DUMP OF SERVICE device_policy:
DUMP OF SERVICE devicestoragemonitor:
DUMP OF SERVICE diskstats:
DUMP OF SERVICE dropbox:
DUMP OF SERVICE entropy:
DUMP OF SERVICE hardware:
DUMP OF SERVICE input_method:
DUMP OF SERVICE iphonesubinfo:
DUMP OF SERVICE isms:
DUMP OF SERVICE location:
DUMP OF SERVICE media.audio_flinger:
DUMP OF SERVICE media.audio_policy:
DUMP OF SERVICE media.player:
DUMP OF SERVICE meminfo:
DUMP OF SERVICE mount:
DUMP OF SERVICE netstat:
DUMP OF SERVICE network_management:
DUMP OF SERVICE notification:
DUMP OF SERVICE package:
DUMP OF SERVICE permission:
DUMP OF SERVICE phone:
DUMP OF SERVICE power:
DUMP OF SERVICE reboot:
DUMP OF SERVICE screenshot:
DUMP OF SERVICE search:
DUMP OF SERVICE sensor:
DUMP OF SERVICE simphonebook:
DUMP OF SERVICE statusbar:
DUMP OF SERVICE telephony.registry:
DUMP OF SERVICE throttle:
DUMP OF SERVICE usagestats:
DUMP OF SERVICE vibrator:
DUMP OF SERVICE wallpaper:
DUMP OF SERVICE wifi:
DUMP OF SERVICE window:

Alcuni esempi e output di dumping

1) Ottenere tutte le statistiche possibili sulla batteria:

$~ adb shell dumpsys battery

Otterrai un output:

Current Battery Service state:
AC powered: false
AC capacity: 500000
USB powered: true
status: 5
health: 2
present: true
level: 100
scale: 100
voltage:4201
temperature: 271 <---------- Battery temperature! %)
technology: Li-poly <---------- Battery technology! %)

2) Ottenere informazioni wifi

~$ adb shell dumpsys wifi

Produzione:

Wi-Fi is enabled
Stay-awake conditions: 3

Internal state:
interface tiwlan0 runState=Running
SSID: XXXXXXX BSSID: xx:xx:xx:xx:xx:xx, MAC: xx:xx:xx:xx:xx:xx, Supplicant state: COMPLETED, RSSI: -60, Link speed: 54, Net ID: 2, security: 0, idStr: null
ipaddr 192.168.1.xxx gateway 192.168.x.x netmask 255.255.255.0 dns1 192.168.x.x dns2 8.8.8.8 DHCP server 192.168.x.x lease 604800 seconds
haveIpAddress=true, obtainingIpAddress=false, scanModeActive=false
lastSignalLevel=2, explicitlyDisabled=false

Latest scan results:

Locks acquired: 28 full, 0 scan
Locks released: 28 full, 0 scan

Locks held:

3) Ottenere informazioni sulla CPU

~$ adb shell dumpsys cpuinfo

Produzione:

Load: 0.08 / 0.4 / 0.64
CPU usage from 42816ms to 34683ms ago:
system_server: 1% = 1% user + 0% kernel / faults: 16 minor
kdebuglog.sh: 0% = 0% user + 0% kernel / faults: 160 minor
tiwlan_wq: 0% = 0% user + 0% kernel
usb_mass_storag: 0% = 0% user + 0% kernel
pvr_workqueue: 0% = 0% user + 0% kernel
+sleep: 0% = 0% user + 0% kernel
+sleep: 0% = 0% user + 0% kernel
TOTAL: 6% = 1% user + 3% kernel + 0% irq

4) Ottenere informazioni sull'utilizzo della memoria

~$ adb shell dumpsys meminfo 'your apps package name'

Produzione:

** MEMINFO in pid 5527 [com.sec.android.widgetapp.weatherclock] **
                    native   dalvik    other    total
            size:     2868     5767      N/A     8635
       allocated:     2861     2891      N/A     5752
            free:        6     2876      N/A     2882
           (Pss):      532       80     2479     3091
  (shared dirty):      932     2004     6060     8996
    (priv dirty):      512       36     1872     2420

 Objects
           Views:        0        ViewRoots:        0
     AppContexts:        0       Activities:        0
          Assets:        3    AssetManagers:        3
   Local Binders:        2    Proxy Binders:        8
Death Recipients:        0
 OpenSSL Sockets:        0


 SQL
               heap:        0         MEMORY_USED:        0
 PAGECACHE_OVERFLOW:        0         MALLOC_SIZE:        0

Se vuoi vedere le informazioni per tutti i processi, usa ~$ adb shell dumpsys meminfo

inserisci qui la descrizione dell'immagine

dumpsys è in definitiva uno strumento flessibile e utile!

Se desideri utilizzare questo strumento, non dimenticare di aggiungere automaticamente l'autorizzazione al tuo manifest Android android.permission.DUMP

Prova a testare tutti i comandi per saperne di più sui dumpsys. Buon dumping!


5
Proviene da un documento da qualche parte o solo dalla tua stessa sperimentazione?
Brianestey,

10
Molto bello è anche: trasmissioni di attività di dump di shell adb, mostra tutte le trasmissioni
Joecks

a partire da Kitkat (credo), "batteryinfo" è stato sostituito con "batterystats" e anche il suo output e utilizzo sembrano diversi.
sviluppatore Android

1
dumpsys è incredibilmente potente. Riporta valori privati ​​dei principali servizi Android che non potresti mai ottenere in genere.
Kevin Mark,

1
sfortunatamente richiede l'autorizzazione a livello di root o di sistema per l'uso nel programma java.
Umesh,

60

Guardando il codice sorgente per dumpsys e servizio , è possibile ottenere l'elenco dei servizi disponibili eseguendo quanto segue:

adb shell service -l

È quindi possibile fornire il nome del servizio che ti interessa a dumpsys per ottenere le informazioni specifiche. Ad esempio (si noti che non tutti i servizi forniscono informazioni sul dump):

adb shell dumpsys activity
adb shell dumpsys cpuinfo
adb shell dumpsys battery

Come puoi vedere nel codice (e nella risposta di K_Anas), se chiami dumpsys senza alcun nome di servizio, scaricherà le informazioni su tutti i servizi in un unico grande dump:

adb shell dumpsys

Alcuni servizi possono ricevere argomenti aggiuntivi su cosa mostrare che normalmente viene spiegato se hai fornito un -hargomento, ad esempio:

adb shell dumpsys activity -h
adb shell dumpsys window -h
adb shell dumpsys meminfo -h
adb shell dumpsys package -h
adb shell dumpsys batteryinfo -h

13

Secondo le informazioni ufficiali di Android sui dumpsys :

Lo strumento dumpsys viene eseguito sul dispositivo e fornisce informazioni sullo stato dei servizi di sistema.

Per ottenere un elenco di servizi disponibili, utilizzare

adb shell dumpsys -l

1
Non riesco a capire perché questo sia stato sottoposto a downgrade: è un link utile. L'elenco dei servizi disponibili -lfunziona sul mio Lollipop ma non sul mio Jelly Bean.
Starfry,

1
Questa risposta ha un puntatore effettivo alla documentazione effettiva. Credo che questo sia ciò che l'OP stava cercando
Robert R Evans,

È stato probabilmente sottoposto a downgrade poiché non vi sono nuove informazioni rispetto alla risposta fornita tre anni prima.
topher217

0

uso dumpsys per catturare se l'app si blocca e il processo è ancora attivo. situazione che ho usato è per scoprire che l'app della macchina remota è bloccata o meno.

dumpsys | grep myapp | grep "Application Error" 

o

adb shell dumpsys | grep myapp | grep Error

o qualsiasi cosa che aiuti ... ecc

se l'app non è in esecuzione non otterrai nulla come risultato. Quando l'app viene interrotta, il messaggio viene mostrato sullo schermo da Android, il processo è ancora attivo e se si controlla tramite il comando " ps " o qualsiasi altra cosa, vedrai che lo stato del processo non mostra alcun errore o significato di crash. Ma quando fai clic sul pulsante per chiudere il messaggio, il processo dell'app verrà pulito dall'elenco dei processi. quindi è difficile trovare lo stato di arresto senza alcun codice nell'applicazione. ma dumpsys ti aiuta.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.