¿Qué es la herramienta "dumpsys" de shell ADB de Android y cuáles son sus beneficios?

140

Estoy buscando la lista completa de dumpsyscomandos de shell ADB con una explicación completa de todos los comandos.

¿Dónde puedo encontrar esta información?

Vishwanath.M
fuente

Respuestas:

247

¿Qué es dumpsys y cuáles son sus beneficios?

dumpsys es una herramienta de Android que se ejecuta en el dispositivo y arroja información interesante sobre el estado de los servicios del sistema.

Beneficios obvios:

  1. Posibilidad de obtener fácilmente información del sistema en una representación de cadena simple.
  2. Posibilidad de utilizar CPU, RAM, batería, estadísticas de almacenamiento para obtener gráficos bonitos, lo que le permitirá verificar cómo su aplicación afecta el dispositivo en general.

¿Qué información podemos recuperar del comando dumpsys shell y cómo podemos usarlo?

Si ejecuta dumpsys, verá una tonelada de información del sistema. Pero solo puede usar partes separadas de este gran basurero.

para ver todos los "subcomandos" de dumpsys hacer:

dumpsys | grep "DUMP OF SERVICE"

Salida:

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:

Algunos ejemplos de volcado y salida

1) Obtener todas las estadísticas de batería posibles:

$~ adb shell dumpsys battery

Obtendrá salida:

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) Obtener información wifi

~$ adb shell dumpsys wifi

Salida:

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) Obtener información de la CPU

~$ adb shell dumpsys cpuinfo

Salida:

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) Obtener información de uso de memoria

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

Salida:

** 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

Si desea ver la información de todos los procesos, use ~$ adb shell dumpsys meminfo

ingrese la descripción de la imagen aquí

dumpsys es, en última instancia, una herramienta flexible y útil.

Si desea utilizar esta herramienta, no olvide agregar permiso en su manifiesto de Android automáticamente android.permission.DUMP

Intente probar todos los comandos para obtener más información sobre dumpsys. ¡Feliz descarga!

K_Anas
fuente
55
¿Es esto de un documento en alguna parte o simplemente de su propia experimentación?
Brianestey
10
También es muy agradable: las transmisiones de actividad de adb shell dumpsys, muestra todas las transmisiones
joecks
comenzando con Kitkat (creo), "batteryinfo" fue reemplazado por "batterystats", y su salida y uso también parece diferente.
Desarrollador de Android
1
dumpsys es increíblemente poderoso. Informa valores privados de los principales servicios de Android que nunca podría obtener normalmente.
Kevin Mark
1
desafortunadamente requiere permiso de nivel raíz o del sistema para usar en el programa java.
umesh
60

Si observa el código fuente de dumpsys y el servicio , puede obtener la lista de servicios disponibles ejecutando lo siguiente:

adb shell service -l

Luego puede proporcionar el nombre del servicio que le interesa a dumpsys para obtener la información específica. Por ejemplo (tenga en cuenta que no todos los servicios proporcionan información de volcado):

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

Como puede ver en el código (y en la respuesta de K_Anas), si llama a dumpsys sin ningún nombre de servicio, volcará la información de todos los servicios en un gran volcado:

adb shell dumpsys

Algunos servicios pueden recibir argumentos adicionales sobre qué mostrar, que normalmente se explica si proporcionó un -hargumento, por ejemplo:

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
Joe
fuente
13

Según la información oficial de Android sobre dumpsys :

Los dumpsys herramienta ejecuta en el dispositivo y proporciona información sobre el estado de los servicios del sistema.

Para obtener una lista de los servicios disponibles, use

adb shell dumpsys -l
lujop
fuente
1
No puedo ver por qué esto fue rechazado: es un enlace útil. La lista de servicios disponibles -lfunciona en mi Lollipop pero no en mi Jelly Bean.
starfry
1
Esta respuesta tiene un puntero real a la documentación real. Creo que esto es lo que estaba buscando el OP
Robert R Evans el
Probablemente fue rechazado ya que no hay nueva información en comparación con la respuesta dada tres años antes.
topher217
0

Yo uso dumpsys para detectar si la aplicación está bloqueada y el proceso aún está activo. La situación que utilicé es para encontrar información sobre que la aplicación de máquina remota está bloqueada o no.

dumpsys | grep myapp | grep "Application Error" 

o

adb shell dumpsys | grep myapp | grep Error

o cualquier cosa que ayude ... etc.

Si la aplicación no se está ejecutando, no obtendrá nada como resultado. Cuando la aplicación se detiene, Android muestra el mensaje en la pantalla, el proceso aún está activo y si marca a través de " comando ps " o cualquier otra cosa, verá que el estado del proceso no muestra ningún error o significado de bloqueo. Pero cuando hace clic en el botón para cerrar el mensaje, el proceso de la aplicación se borrará de la lista de procesos. Por lo tanto, es difícil encontrar el estado de bloqueo sin ningún código en la aplicación. Pero dumpsys te ayuda.

Engin OZTURK
fuente