Що таке інструмент "dumpsys" для оболонки Android ADB і які його переваги?


140

Я шукаю повний список dumpsysкоманд оболонки ADB з повним поясненням усіх команд.

Де я можу знайти цю інформацію?

Відповіді:


247

Що таке смітники і в чому його користь

dumpsys - це інструмент для Android, який працює на пристрої та вивантажує цікаву інформацію про стан системних служб.

Очевидні переваги:

  1. Можливість легко отримати системну інформацію в простому представленні рядків.
  2. Можливість використання демпінгових процесорів, оперативної пам’яті, акумулятора, статистики зберігання для неабияких діаграм, що дозволить вам перевірити, як ваша програма впливає на загальний пристрій!

Яку інформацію ми можемо отримати з команди shellpsys shell і як ми можемо її використовувати

Якщо ви запускаєте dumpsys, ви побачите багато системної інформації. Але ви можете використовувати лише окремі частини цього великого сміттєзвалища.

щоб побачити всі "підкоманди" сміттєвих марок:

dumpsys | grep "DUMP OF SERVICE"

Вихід:

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:

Деякі демпінгові приклади та результати

1) Отримання всіх можливих статистичних даних про акумулятор:

$~ adb shell dumpsys battery

Ви отримаєте вихід:

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) Отримання інформації Wi-Fi

~$ adb shell dumpsys wifi

Вихід:

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) Отримання інформації про процесор

~$ adb shell dumpsys cpuinfo

Вихід:

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) Отримання інформації про використання пам'яті

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

Вихід:

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

Якщо ви хочете переглянути інформацію про всі процеси, використовуйте ~$ adb shell dumpsys meminfo

введіть тут опис зображення

dumpsys - це в кінцевому рахунку гнучкий і корисний інструмент!

Якщо ви хочете скористатися цим інструментом, не забудьте додати дозвіл у свій маніфест Android android.permission.DUMP

Спробуйте протестувати всі команди, щоб дізнатись більше про смітники. Щасливий демпінг!


5
Це з документа десь чи просто ваш власний експеримент?
brianestey

10
Також дуже приємно: трансляція активності adb shell dumpsys, показ усіх трансляцій
joecks

Починаючи з Кіткат (я думаю), "інформація про батарею" була замінена на "батареї", і її вихід та використання також здаються різними.
андроїд розробник

1
dumpsys неймовірно потужний. Він повідомляє про приватні цінності основних сервісів Android, які ви ніколи не зможете отримати.
Кевін Марк

1
на жаль, для використання в програмі java потрібен дозвіл кореневого або системного рівня.
umesh

60

Переглядаючи вихідний код для dumpsys та сервісу , ви можете отримати список доступних послуг, виконавши наступне:

adb shell service -l

Потім ви можете надати ім'я послуги, яке вас зацікавило, для смітників, щоб отримати конкретну інформацію. Наприклад (зауважте, що не всі служби надають інформацію про скидання):

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

Як ви бачите в коді (і у відповіді K_Anas), якщо ви зателефонуєте в dumpsys без будь-якої назви служби, вона скидає інформацію про всі сервіси на одному великому дампі:

adb shell dumpsys

Деякі служби можуть отримати додаткові аргументи щодо того, що показувати, що зазвичай пояснюється, якщо ви подали -hаргумент, наприклад:

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

Згідно з офіційною інформацією Android про dumpsys :

Інструмент dumpsys працює на пристрої та надає інформацію про стан системних послуг.

Щоб отримати список доступних послуг, використовуйте

adb shell dumpsys -l

1
Я не бачу, чому це було знято - це корисне посилання. Список доступних сервісів -lпрацює на моєму льодянику, але не на моєму квасолі.
starfry

1
Ця відповідь має фактичний покажчик на фактичну документацію. Я вірю, що саме це шукало в ОП
Роберт Р Еванс

Ймовірно, це було знято з огляду на те, що немає нової інформації порівняно з відповіддю, даним за три роки до цього.
topher217

0

Я використовую dumpsys, щоб ловити, якщо програма перестала працювати і процес все ще активний. Ситуація, яку я використав, це дізнатися про збій програми віддаленої машини чи ні.

dumpsys | grep myapp | grep "Application Error" 

або

adb shell dumpsys | grep myapp | grep Error

або все, що допомагає ... тощо

якщо додаток не працює, ви нічого не отримаєте. Коли програма стоп-повідомлення буде застосована на екрані андроїдом, процес все ще є активним, і якщо ви перевірте команду " ps " чи щось інше, ви побачите, що стан процесу не відображає жодної помилки чи значення аварії. Але коли ви натиснете кнопку, щоб закрити повідомлення, процес програми буде очищено зі списку процесів. тому важко знайти стан аварії без будь-якого коду в застосуванні. але dumpsys вам допомагає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.