Android ADB shell“ dumpsys” เป็นเครื่องมืออะไรและมีประโยชน์อย่างไร?


140

ฉันกำลังมองหารายการทั้งหมดของdumpsysคำสั่งเชลล์ ADB พร้อมคำอธิบายแบบเต็มของคำสั่งทั้งหมด

ฉันจะหาข้อมูลนี้ได้ที่ไหน

คำตอบ:


247

อะไรคือสิ่งที่ทิ้งและสิ่งที่เป็นประโยชน์

dumpsysเป็นเครื่องมือ android ที่ทำงานบนอุปกรณ์และทิ้งข้อมูลที่น่าสนใจเกี่ยวกับสถานะของบริการของระบบ

ผลประโยชน์ที่ชัดเจน:

  1. ความเป็นไปได้ในการรับข้อมูลระบบในรูปแบบสตริงอย่างง่าย
  2. ความเป็นไปได้ที่จะใช้ CPU, RAM, แบตเตอรี่, สถิติการจัดเก็บข้อมูลสำหรับชาร์ตสวย ๆ ซึ่งจะช่วยให้คุณสามารถตรวจสอบว่าแอปพลิเคชันของคุณส่งผลต่ออุปกรณ์โดยรวมอย่างไร!

ข้อมูลใดที่เราสามารถดึงข้อมูลจากคำสั่ง dumpsys shell และวิธีการใช้งาน

หากคุณเรียกใช้ dumpsys คุณจะเห็นข้อมูลระบบมากมาย แต่คุณสามารถใช้เฉพาะส่วนใหญ่ของดัมพ์ขนาดใหญ่นี้ได้เท่านั้น

เพื่อดู "คำสั่งย่อย" ทั้งหมดของ 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) รับข้อมูล wifi

~$ 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) รับข้อมูล CPU

~$ 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

ลองทดสอบคำสั่งทั้งหมดเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ dumpsys ยินดีทิ้ง!


5
นี่มาจากเอกสารหรือที่การทดลองของคุณเองหรือ
brianestey

10
สิ่งที่ดีมากเช่นกัน: adb shell dumpsys การออกอากาศกิจกรรม, แสดงการออกอากาศทั้งหมด
joecks

เริ่มต้นด้วย Kitkat (ฉันคิดว่า), "batteryinfo" ถูกแทนที่ด้วย "batterystats" และผลลัพธ์และการใช้งานก็แตกต่างกัน
นักพัฒนาซอฟต์แวร์ Android

1
dumpsys มีพลังอย่างไม่น่าเชื่อ มันรายงานค่าส่วนตัวของบริการ Android หลักที่คุณจะไม่สามารถรับได้
Kevin Mark

1
โชคไม่ดีที่มันต้องการสิทธิ์รูทหรือระดับระบบเพื่อใช้ในโปรแกรมจาวา
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
ฉันไม่เห็นสาเหตุที่เกิดจาก downvote - เป็นลิงก์ที่มีประโยชน์ รายการบริการที่มีให้ใช้-lงานได้ใน Lollipop ของฉัน แต่ไม่ใช่ใน Jelly Bean ของฉัน
starfry

1
คำตอบนี้มีตัวชี้จริงไปยังเอกสารจริง ฉันเชื่อว่านี่คือสิ่งที่ OP มองหา
Robert R Evans

มีแนวโน้มลดลงเนื่องจากไม่มีข้อมูลใหม่เมื่อเปรียบเทียบกับคำตอบที่ให้เมื่อสามปีก่อน
topher217

0

ฉันใช้dumpsysเพื่อตรวจสอบว่าแอพขัดข้องและกระบวนการยังทำงานอยู่ สถานการณ์ที่ฉันใช้มันคือการค้นหาเกี่ยวกับแอพเครื่องระยะไกลผิดพลาดหรือไม่

dumpsys | grep myapp | grep "Application Error" 

หรือ

adb shell dumpsys | grep myapp | grep Error

หรืออะไรก็ตามที่ช่วย ... ฯลฯ

หากแอปไม่ทำงานคุณจะไม่ได้รับผลใด ๆ เมื่อแอปหยุด messsage แสดงบนหน้าจอโดย android กระบวนการยังคงทำงานอยู่และหากคุณตรวจสอบผ่านคำสั่ง " ps " หรืออะไรก็ตามคุณจะเห็นสถานะกระบวนการไม่แสดงข้อผิดพลาดหรือความผิดพลาดใด ๆ แต่เมื่อคุณคลิกปุ่มเพื่อปิดข้อความกระบวนการแอปจะล้างออกจากรายการกระบวนการ ดังนั้นการตรวจสอบสถานะความผิดพลาดโดยไม่ต้องใช้รหัสใด ๆ ในแอปพลิเคชันนั้นหายาก แต่dumpsysช่วยคุณได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.