O que é a ferramenta “dumpsys” do shell do ADB do Android e quais são seus benefícios?

140

Estou procurando a lista completa de dumpsyscomandos shell ADB com uma explicação completa de todos os comandos.

Onde posso encontrar esta informação?

Vishwanath.M
fonte

Respostas:

247

O que é dumpsys e quais são seus benefícios

dumpsys é uma ferramenta para Android que roda no dispositivo e despeja informações interessantes sobre o status dos serviços do sistema.

Benefícios óbvios:

  1. Possibilidade de obter facilmente informações do sistema em uma simples representação de string.
  2. Possibilidade de usar estatísticas de CPU, RAM, bateria, armazenamento despejadas para gráficos bonitos, o que permitirá que você verifique como seu aplicativo afeta o dispositivo em geral!

Quais informações podemos recuperar do comando dumpsys shell e como podemos usá-las

Se você executar o dumpsys, verá uma tonelada de informações do sistema. Mas você pode usar apenas partes separadas desse grande despejo.

para ver todos os "subcomandos" do dumpsys:

dumpsys | grep "DUMP OF SERVICE"

Resultado:

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:

Alguns exemplos e resultados de dumping

1) Obtendo todas as estatísticas possíveis da bateria:

$~ adb shell dumpsys battery

Você obterá saída:

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) Obtendo informações de wifi

~$ adb shell dumpsys wifi

Resultado:

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) Obtendo informações da CPU

~$ adb shell dumpsys cpuinfo

Resultado:

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) Obtendo informações sobre o uso da memória

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

Resultado:

** 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 você quiser ver as informações de todos os processos, use ~$ adb shell dumpsys meminfo

insira a descrição da imagem aqui

O dumpsys é uma ferramenta flexível e útil!

Se você deseja usar esta ferramenta, não se esqueça de adicionar permissão ao seu manifesto do Android automaticamente android.permission.DUMP

Tente testar todos os comandos para aprender mais sobre dumpsys. Feliz dumping!

K_Anas
fonte
5
Isso está em um documento em algum lugar ou apenas na sua própria experimentação?
Brianestey 25/10/12
10
Também muito interessante é: adb shell dumpsys transmissões de atividades, shows todas as transmissões
joecks
começando com Kitkat (acho), "batteryinfo" foi substituído por "batterystats", e sua saída e uso também parecem diferentes.
desenvolvedor android
1
dumpsys é incrivelmente poderoso. Ele relata valores privados dos principais serviços Android que você nunca conseguiria obter normalmente.
Kevin Mark
1
infelizmente, requer permissão de nível de raiz ou sistema para usar no programa java.
umesh
60

Observando o código-fonte para dumpsys e serviço , você pode obter a lista de serviços disponíveis executando o seguinte:

adb shell service -l

Você pode fornecer o nome do serviço em que você está interessado no dumpsys para obter as informações específicas. Por exemplo (observe que nem todos os serviços fornecem informações de despejo):

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

Como você pode ver no código (e na resposta do K_Anas), se você chamar dumpsys sem nenhum nome de serviço, ele despejará as informações de todos os serviços em um grande despejo:

adb shell dumpsys

Alguns serviços podem receber argumentos adicionais sobre o que mostrar o que normalmente é explicado se você forneceu um -hargumento, por exemplo:

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
fonte
13

De acordo com informações oficiais do Android sobre dumpsys :

A ferramenta dumpsys é executada no dispositivo e fornece informações sobre o status dos serviços do sistema.

Para obter uma lista dos serviços disponíveis, use

adb shell dumpsys -l
lujop
fonte
1
Não vejo por que isso foi prejudicado - é um link útil. A lista de serviços disponíveis -lfunciona no meu pirulito, mas não no meu Jelly Bean.
starfry
1
Esta resposta tem um ponteiro real para a documentação real. Eu acredito que este é o que o OP estava procurando
Robert R Evans
Provavelmente, a votação foi reduzida, pois não há novas informações em comparação com a resposta dada três anos antes.
Top2129
0

Eu uso o dumpsys para capturar se o aplicativo falhar e o processo ainda estiver ativo. situação que usei é encontrar sobre o aplicativo de máquina remota está travado ou não.

dumpsys | grep myapp | grep "Application Error" 

ou

adb shell dumpsys | grep myapp | grep Error

ou qualquer coisa que ajude ... etc

se o aplicativo não estiver sendo executado, você não obterá nada como resultado. Quando o aplicativo é interrompido, a mensagem é mostrada na tela pelo Android, o processo ainda está ativo e, se você marcar via comando " ps " ou qualquer outra coisa, verá que o estado do processo não está mostrando nenhum erro ou significado de falha. Mas quando você clica no botão para fechar a mensagem, o processo do aplicativo é limpo da lista de processos. é difícil encontrar o estado de falha sem nenhum código no aplicativo. mas dumpsys ajuda você.

Engin OZTURK
fonte