Was ist das Android-ADB-Shell-Tool "dumpsys" und welche Vorteile bietet es?

140

Ich suche nach der vollständigen Liste der ADB-Shell- dumpsysBefehle mit einer vollständigen Erläuterung aller Befehle.

Wo finde ich diese Informationen?

Vishwanath.M
quelle

Antworten:

247

Was ist Dumpsys und was sind seine Vorteile

dumpsys ist ein Android-Tool, das auf dem Gerät ausgeführt wird und interessante Informationen zum Status von Systemdiensten ausgibt .

Offensichtliche Vorteile:

  1. Möglichkeit, Systeminformationen einfach in einer einfachen Zeichenfolgendarstellung abzurufen.
  2. Möglichkeit, ausgelagerte CPU-, RAM-, Batterie- und Speicherstatistiken für hübsche Diagramme zu verwenden, mit denen Sie überprüfen können, wie sich Ihre Anwendung auf das gesamte Gerät auswirkt!

Welche Informationen können wir aus dem Shell-Befehl dumpsys abrufen und wie können wir sie verwenden?

Wenn Sie dumpsys ausführen, werden eine Menge Systeminformationen angezeigt. Sie können jedoch nur separate Teile dieser großen Müllkippe verwenden.

Um zu sehen, dass alle "Unterbefehle" von dumpsys Folgendes tun:

dumpsys | grep "DUMP OF SERVICE"

Ausgabe:

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:

Einige Dumping-Beispiele und Ausgaben

1) Abrufen aller möglichen Batteriestatistiken:

$~ adb shell dumpsys battery

Sie erhalten folgende Ausgabe:

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) WLAN-Informationen erhalten

~$ adb shell dumpsys wifi

Ausgabe:

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) CPU-Informationen abrufen

~$ adb shell dumpsys cpuinfo

Ausgabe:

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) Informationen zur Speichernutzung abrufen

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

Ausgabe:

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

Wenn Sie die Informationen für alle Prozesse anzeigen möchten, verwenden Sie ~$ adb shell dumpsys meminfo

Geben Sie hier die Bildbeschreibung ein

dumpsys ist letztendlich ein flexibles und nützliches Werkzeug!

Wenn Sie dieses Tool verwenden möchten, vergessen Sie nicht, Ihrem Android-Manifest automatisch Berechtigungen hinzuzufügen android.permission.DUMP

Versuchen Sie, alle Befehle zu testen, um mehr über dumpsys zu erfahren. Viel Spaß beim Dumping!

K_Anas
quelle
5
Ist das aus einem Dokument irgendwo oder nur aus eigenen Experimenten?
Brianestey
10
Ebenfalls sehr schön ist: adb shell dumpsys aktivitätssendungen, zeigt alle
sendungen
Beginnend mit Kitkat (glaube ich) wurde "Batterieinfo" durch "Batteriestatistik" ersetzt, und auch die Ausgabe und Verwendung scheint unterschiedlich zu sein.
Android-Entwickler
1
dumpsys ist unglaublich mächtig. Es werden private Werte der wichtigsten Android-Dienste gemeldet, die Sie normalerweise nie erhalten würden.
Kevin Mark
1
Leider ist die Berechtigung auf Root- oder Systemebene erforderlich, um in Java-Programmen verwendet zu werden.
Umesh
60

Wenn Sie sich den Quellcode für dumpsys und service ansehen , können Sie die Liste der verfügbaren Services abrufen , indem Sie Folgendes ausführen:

adb shell service -l

Sie können dann dumpsys den Dienstnamen geben, an dem Sie interessiert sind, um die spezifischen Informationen zu erhalten. Zum Beispiel (beachten Sie, dass nicht alle Dienste Speicherauszugsinformationen bereitstellen):

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

Wie Sie im Code (und in der Antwort von K_Anas) sehen können, werden beim Aufrufen von dumpsys ohne Dienstnamen die Informationen zu allen Diensten in einem großen Speicherauszug gespeichert:

adb shell dumpsys

Einige Dienste können zusätzliche Argumente dafür erhalten, was angezeigt werden soll, was normalerweise erklärt wird, wenn Sie ein -hArgument angegeben haben, zum Beispiel:

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

Laut offiziellen Android-Informationen zu dumpsys :

Das dumpsys- Tool wird auf dem Gerät ausgeführt und bietet Informationen zum Status der Systemdienste.

Um eine Liste der verfügbaren Dienste zu erhalten, verwenden Sie

adb shell dumpsys -l
lujop
quelle
1
Ich kann nicht verstehen, warum dies abgelehnt wurde - es ist ein nützlicher Link. Die Liste der verfügbaren Dienste -lfunktioniert auf meinem Lollipop, jedoch nicht auf meiner Jelly Bean.
Sternenhimmel
1
Diese Antwort enthält einen tatsächlichen Zeiger auf die tatsächliche Dokumentation. Ich glaube, das ist es, wonach das OP gesucht hat
Robert R Evans
Es wurde wahrscheinlich herabgestuft, da es im Vergleich zu der Antwort, die drei Jahre zuvor gegeben wurde, keine neuen Informationen gibt .
Topher217
0

Ich benutze Dumpsys , um zu fangen, wenn die App abgestürzt ist und der Prozess noch aktiv ist. Situation, die ich verwendet habe, ist zu finden, über Remote-Maschine App ist abgestürzt oder nicht.

dumpsys | grep myapp | grep "Application Error" 

oder

adb shell dumpsys | grep myapp | grep Error

oder irgendetwas, das hilft ... etc.

Wenn die App nicht ausgeführt wird, erhalten Sie nichts als Ergebnis. Wenn die App gestoppt ist, wird die Meldung von Android auf dem Bildschirm angezeigt. Der Prozess ist weiterhin aktiv. Wenn Sie über den Befehl " ps " oder etwas anderes nachsehen, wird angezeigt, dass der Prozessstatus keine Fehler- oder Absturzbedeutung anzeigt . Wenn Sie jedoch auf die Schaltfläche klicken, um die Nachricht zu schließen, wird der App-Prozess aus der Prozessliste entfernt. Daher ist es schwierig, den Absturzstatus ohne Code in der Anwendung zu ermitteln. aber dumpsys hilft dir.

Engin OZTURK
quelle