当前位置:   article > 正文

adb设备调试常用命令_adb top

adb top

自从工作越来越忙后,越来越懒得写文章了,趁着1024程序员节,仪式性地写篇文章,分享一下最近调试设备经常用到的adb指令~

1.查看应用内存占用

1.1 dumpsys meminfo package

dumpsys是查看系统服务信息的一个常用指令,可以用dumpsys -l查看系统所有的服务,dumpsys meminfo可以查看到应用最详细的内存占用情况,主要有两大用途

  • 查看应用的内存占用情况,可以看到不同的内存类型占用,详细的占用情况可助于分析应用哪一块占用了较大内存。
  • 辅助分析内存泄露问题,该命令可以查看到Activity的个数,当退出界面后仍然还有activity存在或者个数不对,则说明该activity已经泄露了。

命令查询的数据示例如下:

Applications Memory Usage (in Kilobytes):
Uptime: 195423478 Realtime: 195423478

** MEMINFO in pid 23209 [com.example.myfirstapp] **
                   Pss  Private  Private     Swap     Heap     Heap     Heap
                 Total    Dirty    Clean    Dirty     Size    Alloc     Free
                ------   ------   ------   ------   ------   ------   ------
  Native Heap     8406     8284        0        0    20620    17082     3537
  Dalvik Heap      988      900        0        0     2962     1426     1536
 Dalvik Other      481      476        0        0                           
        Stack       56       56        0        0                           
       Ashmem        7        0        0        0                           
    Other dev       12        0       12        0                           
     .so mmap     2123      160        8        0                           
    .jar mmap     1737        0       24        0                           
    .apk mmap     1027        0        0        0                           
    .ttf mmap       48        0        0        0                           
    .dex mmap     1944        4     1936        0                           
    .oat mmap       66        0        0        0                           
    .art mmap     5883     5508        0        0                           
   Other mmap       60       20        0        0                           
      Unknown      725      688        0        0                           
        TOTAL    23563    16096     1980        0    23582    18508     5073
 
 App Summary
                       Pss(KB)
                        ------
           Java Heap:     6408
         Native Heap:     8284
                Code:     2132
               Stack:       56
            Graphics:        0
       Private Other:     1196
              System:     5487
 
               TOTAL:    23563      TOTAL SWAP (KB):        0
 
 Objects
               Views:       17         ViewRootImpl:        1
         AppContexts:        6           Activities:        1
              Assets:        2        AssetManagers:        0
       Local Binders:        9        Proxy Binders:       28
       Parcel memory:        2         Parcel count:       10
    Death Recipients:        0      OpenSSL Sockets:        0
            WebViews:        0
 
 SQL
         MEMORY_USED:        0
  PAGECACHE_OVERFLOW:        0          MALLOC_SIZE:        0

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

PSS表示应用程序占用的共享内存和私有内存的总和,该参数能比较精确地表示应用占用的内存大小。

如果dumpsys meminfo不带包名,则会打印出系统整体所有应用的内存占用,并且还能看到应用的进程等级,对于系统性能调优用途很大。

1.2 top -s 6

top命令比dumpsys命令的优点是实时性高,缺点是无法查看到PSS的数值,要自己估算出实际的内存占用情况。top命令还能查看当前应用的cpu占用率及内存占用情况,这是top命令一个常用用途。

-s 6参数含义是用RSS列进行排序,让内存占用最高的在最前边,默认排序是CPU占用率,应用在未操作时会排到很后,有可能会看不到当前的应用。

Tasks: 162 total,   1 running, 161 sleeping,   0 stopped,   0 zombie
  Mem:      1.9G total,      1.7G used,      175M free,       23M buffers
 Swap:         0 total,         0 used,         0 free,      968M cached
400%cpu  11%user   1%nice   8%sys 380%idle   0%iow   0%irq   0%sirq   0%host
  PID USER         PR  NI VIRT [RES] SHR S %CPU  %MEM     TIME+ ARGS                                    
  515 system       18  -2 7.7G 295M 199M S  4.6  14.7  29:48.69 system_server
  683 u0_a100      20   0 5.2G 205M 149M S  2.6  10.2  40:35.52 com.android.systemui
 8036 system       20   0 4.6G 166M 116M S  0.0   8.2   0:03.29 com.android.settings
  935 u0_a102      20   0 4.8G 163M 110M S  0.0   8.1   0:21.57 com.android.launcher3
  176 root         20   0 5.1G 147M 122M S  0.0   7.3   0:02.27 zygote64
  999 u0_a115      20   0 4.6G 139M  99M S  0.0   6.9   0:03.67 com.android.inputmethod.latin
 3250 u0_a116      20   0 4.5G 131M  85M S  0.0   6.5   0:01.33 com.dfl.android.bestpractice
  764 radio        20   0 4.9G 123M  94M S  0.3   6.1   2:24.95 com.android.phone
16167 u0_a56       20   0 4.4G 114M  79M S  0.0   5.7   0:00.23 com.android.documentsui
 1136 u0_a99       20   0 4.5G 113M  78M S  0.0   5.6   0:00.48 com.android.dialer
23209 u0_a123      10 -10 4.4G 111M  78M S  0.0   5.5   0:00.35 com.example.myfirstapp
  748 network_sta+ 20   0 4.6G 107M  80M S  0.0   5.3   0:25.21 com.android.networkstack
 2515 system       20   0 4.5G 105M  63M S  0.0   5.2   0:00.71 com.android.keychain
 1907 u0_a67       20   0 4.5G 102M  68M S  0.0   5.0   0:00.48 com.android.permissioncontroller
 1942 u0_a65       20   0 4.4G  96M  62M S  0.0   4.8   0:00.39 com.android.providers.calendar
 1311 radio        20   0 4.4G  94M  60M S  0.0   4.6   0:00.24 com.android.ims.rcsservice
  838 u0_a58       20   0 4.5G  93M  67M S  0.0   4.6   0:00.62 android.ext.services
16269 u0_a54       20   0 4.4G  90M  57M S  0.0   4.5   0:00.06 com.android.mtp
 1288 secure_elem+ 20   0 4.4G  90M  57M S  0.0   4.5   0:00.21 com.android.se
16209 u0_a64       20   0 4.4G  90M  56M S  0.0   4.4   0:00.04 com.android.externalstorage
16237 u0_a54       20   0 4.4G  90M  63M S  0.0   4.4   0:00.07 android.process.media

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

PSS的内存=RES(进程当前实际占用的物理大小)-SHR(共享内存大小)/共享进程数量,RES的内存值包含了和其他进程共享内存的数据,所以其值会比实际应用占用的内存值PSS要偏大。另外也可使用命令procrank可查看应用的内存占用排名。

2.查看系统硬件信息

2.1 查看内存信息 cat /proc/meminfo

该命令可查看到关于内存的详细信息,包含内存总大小及各个细分类型的内存大小,其中的CmaTotal与CmaFree是一个重要的参数,表示可分配的连续物理内存,如果cma的内存不足,会导致无法打开新界面或弹窗,或出现黑屏的问题。

MemTotal:        7708608 kB
MemFree:          125148 kB
MemAvailable:    2150096 kB
Buffers:            2096 kB
Cached:          1959024 kB
SwapCached:        31456 kB
Active:          1425944 kB
Inactive:        1842408 kB
Active(anon):     781092 kB
Inactive(anon):   797336 kB
Active(file):     644852 kB
Inactive(file):  1045072 kB
Unevictable:      193320 kB
Mlocked:          193320 kB
SwapTotal:       5767164 kB
SwapFree:         740944 kB
Dirty:               208 kB
Writeback:             0 kB
AnonPages:       1497100 kB
Mapped:          1086956 kB
Shmem:             84136 kB
KReclaimable:     639856 kB
Slab:             644596 kB
SReclaimable:     185208 kB
SUnreclaim:       459388 kB
KernelStack:      137728 kB
PageTables:       188484 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     9621468 kB
Committed_AS:   198069204 kB
VmallocTotal:   263061440 kB
VmallocUsed:      235160 kB
VmallocChunk:          0 kB
Percpu:            13568 kB
CmaTotal:         372736 kB
CmaFree:               0 kB
IonTotalCache:     178616 kB
IonTotalUsed:     428572 kB
GPUTotalUsed:     450368 kB
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

我手机打印出的CmaFree为0kb,但手机还是能正常使用,这一块与我的认识不太一样,只能推测为手机系统自已做过内存管理模块相关的修改。

2.2 查看cpu信息 cat /proc/cpuinfo

该命令可以查看CPU的核心数,及架构信息。

Processor	: AArch64 Processor rev 0 (aarch64)
processor	: 0
BogoMIPS	: 38.40
Features	: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer	: 0x51
CPU architecture: 8
CPU variant	: 0xd
CPU part	: 0x805
CPU revision	: 14

processor	: 1
BogoMIPS	: 38.40
Features	: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer	: 0x51
CPU architecture: 8
CPU variant	: 0xd
CPU part	: 0x805
CPU revision	: 14
...
processor	: 7
BogoMIPS	: 38.40
Features	: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp
CPU implementer	: 0x41
CPU architecture: 8
CPU variant	: 0x1
CPU part	: 0xd0d
CPU revision	: 0

Hardware	: Qualcomm Technologies, Inc SM8250_AC
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

我手机的基本信息是64位8核cpu,高通芯片。

2.3 查看存储分区及占用 df -h

该命令会以M为单位,列出系统上所有目录及其分区,最主要用途是查看哪个分区占用了较大的存储。

Filesystem        Size Used Avail Use% Mounted on
/dev/block/dm-15  650M 650M     0 100% /
tmpfs             3.6G 2.0M  3.6G   1% /dev
tmpfs             3.6G  24K  3.6G   1% /mnt
/dev/block/dm-16  1.0G 1.0G     0 100% /system_ext
/dev/block/dm-17  2.3M 2.3M     0 100% /product
overlay-overlay   3.4M 3.4M     0 100% /product/app
overlay-overlay   3.4M 3.4M     0 100% /product/priv-app
overlay-overlay   3.4M 3.4M     0 100% /product/lib64
overlay-overlay   3.4M 3.4M     0 100% /product/lib
overlay-overlay   3.4M 3.4M     0 100% /product/overlay
overlay           511M 511M     0 100% /product/etc/permissions
overlay           511M 511M     0 100% /product/framework
/dev/block/dm-18  930M 930M     0 100% /vendor
/dev/block/dm-19  237M 237M     0 100% /odm
/dev/block/dm-7   2.1G 2.1G     0 100% /my_stock
/dev/block/dm-12  1.0G 1.0G     0 100% /my_preload
/dev/block/dm-14  822M 822M     0 100% /my_bigball
/dev/block/dm-13  368K 368K     0 100% /my_manifest
tmpfs             3.6G  16K  3.6G   1% /apex
/dev/block/sda9   404M  40M  351M  11% /cache
/dev/block/dm-49  106G 103G  2.8G  98% /data
...
/dev/block/loop31 232K 116K  112K  51% /apex/com.android.scheduling@339990000
/dev/block/loop32 720K 692K   16K  98% /apex/com.android.sdkext@339990000
/dev/block/loop33 232K  80K  148K  36% /apex/com.android.ondevicepersonalization@339990000
/dev/fuse         106G 103G  2.8G  98% /storage/emulated
/data/media       106G 103G  2.8G  98% /storage/emulated/0/Android/data
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

如果想查看某个目录下哪个文件或目录占用的存储最大,可使用命令df -sh *来查看,先进入指令的目录,再执行该指令。

3.5K	ARDebug
12K	Alarms
18G	Android
59M	AnkiChina
12K	Audiobooks
201M	BaiduNetdisk
15K	Browser
3.5K	ByteDownload
15K	Ccb
231K	ColorOS
2.7G	DCIM
5.4M	DingTalk
3.5M	Documents
1.2G	Download
...
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

2.4 查看系统配置的属性信息 getprop

该命令可查看到系统预置的一些属性值,有一些功能相关联的信息可以通过反射比较方便要从prop中取出。

[vendor.media.vpp.osie.enable]: [0]
[vendor.media.vpp.osie.internal.enable]: [1]
[vendor.media.vpp.osie.internal.version]: [osie2.0]
[vendor.media.vpp.sr.internal.enable]: [1]
[vendor.modem_dump_action]: [1]
[vendor.opengles.version]: [196610]
[vendor.oplus.dalvik.vm.heapgrowthlimit]: [384m]
[vendor.oplus.dalvik.vm.heapmaxfree]: [8m]
[vendor.oplus.dalvik.vm.heapminfree]: [512k]
[vendor.oplus.dalvik.vm.heapsize]: [512m]
[vendor.oplus.dalvik.vm.heapstartsize]: [16m]
[vendor.oplus.dalvik.vm.heaptargetutilization]: [0.75]
[vendor.oplus.sap.interface]: [wlan2]
[vendor.vidc.debug.level]: [1]
[vendor.vold.serialno]: []
[vold.fbe.decrypted]: [1]
[vold.has_adoptable]: [0]
[vold.has_compress]: [0]
[vold.has_quota]: [1]
[vold.has_reserved]: [1]
[vold.storage.prepared]: [1]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

如果有root权限,还可以通过命令setprop key 值,修改参数的值。

2.5 设备的分辨率及dpi

  • 查看设备的分辨率wm size,

  • 查看设备的dpiwm density

emulator64_arm64:/ $ wm size
Physical size: 1920x1080
 $ wm density
Physical density: 160
  • 1
  • 2
  • 3
  • 4

3. 模拟操作指令

3.1 白天黑夜切换 cmd uimode night

该指令需要先执行su切换成root用户,适用于可进行root的设备。可用于验证白天黑夜模式快速切换下界面是否有异常

 cmd uimode night yes
Night mode: yes
emulator64_arm64:/ # cmd uimode night no                                                               
Night mode: no
emulator64_arm64:/ # cmd uimode night auto                                                             
Night mode: auto
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 白天:night no
  • 黑夜: night yes
  • 自动:night auto

3.2 模拟输入事件 input

input支持的输入的类型有

  • text:文本,input text 123
  • keyevent:物理按键,input keyevent 4,返回back;3回到主页home
  • tap:点击事件,input tap 100 100,点击(100,100)对应的位置点
  • swipe:滑动事件,input swipe 10 20 30 40,从(10,20)坐标滑动到(30,40)
  • draganddrop:拖动事件,input draganddrop 10 20 30 40,从(10,20)坐标拖动到(30,40)
  • press:按压事件,input press 200 300 ,按下(200,300)坐标,不会触发点击事件
  • roll:滚动事件,input roll 100 100,向右滚动100像素,向下滚动100像素
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/790975
推荐阅读
  

闽ICP备14008679号