adb设备调试常用命令

自从工作越来越忙后,越来越懒得写文章了,趁着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     HeapTotal    Dirty    Clean    Dirty     Size    Alloc     Free------   ------   ------   ------   ------   ------   ------Native Heap     8406     8284        0        0    20620    17082     3537Dalvik Heap      988      900        0        0     2962     1426     1536Dalvik 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     5073App SummaryPss(KB)------Java Heap:     6408Native Heap:     8284Code:     2132Stack:       56Graphics:        0Private Other:     1196System:     5487TOTAL:    23563      TOTAL SWAP (KB):        0ObjectsViews:       17         ViewRootImpl:        1AppContexts:        6           Activities:        1Assets:        2        AssetManagers:        0Local Binders:        9        Proxy Binders:       28Parcel memory:        2         Parcel count:       10Death Recipients:        0      OpenSSL Sockets:        0WebViews:        0SQLMEMORY_USED:        0PAGECACHE_OVERFLOW:        0          MALLOC_SIZE:        0

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 zombieMem:      1.9G total,      1.7G used,      175M free,       23M buffersSwap:         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%hostPID 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_server683 u0_a100      20   0 5.2G 205M 149M S  2.6  10.2  40:35.52 com.android.systemui8036 system       20   0 4.6G 166M 116M S  0.0   8.2   0:03.29 com.android.settings935 u0_a102      20   0 4.8G 163M 110M S  0.0   8.1   0:21.57 com.android.launcher3176 root         20   0 5.1G 147M 122M S  0.0   7.3   0:02.27 zygote64999 u0_a115      20   0 4.6G 139M  99M S  0.0   6.9   0:03.67 com.android.inputmethod.latin3250 u0_a116      20   0 4.5G 131M  85M S  0.0   6.5   0:01.33 com.dfl.android.bestpractice764 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.documentsui1136 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.myfirstapp748 network_sta+ 20   0 4.6G 107M  80M S  0.0   5.3   0:25.21 com.android.networkstack2515 system       20   0 4.5G 105M  63M S  0.0   5.2   0:00.71 com.android.keychain1907 u0_a67       20   0 4.5G 102M  68M S  0.0   5.0   0:00.48 com.android.permissioncontroller1942 u0_a65       20   0 4.4G  96M  62M S  0.0   4.8   0:00.39 com.android.providers.calendar1311 radio        20   0 4.4G  94M  60M S  0.0   4.6   0:00.24 com.android.ims.rcsservice838 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.mtp1288 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

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

我手机打印出的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	: 14processor	: 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	: 0Hardware	: Qualcomm Technologies, Inc SM8250_AC

我手机的基本信息是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

如果想查看某个目录下哪个文件或目录占用的存储最大,可使用命令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
...

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]

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

2.5 设备的分辨率及dpi

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

  • 查看设备的dpiwm density

emulator64_arm64:/ $ wm size
Physical size: 1920x1080$ wm density
Physical density: 160

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
  • 白天: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像素

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/117401.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

30天精通Nodejs--目录与说明

说明 本系列博客主要针对nodejs零基础的小伙伴,涵盖了Node.js从基础到高级的各个方面。 前置条件,有js的基础,了解css和html。 nodejs版本20.8.1。 目录 基础知识 第1天:基础介绍 第2天:模块系统与npm 第3天&#…

从REST到GraphQL:升级你的Apollo体验

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

Qt之实现支持多选的QCombobox

一.效果 1.点击下拉列表的复选框区域 2.点击下拉列表的非复选框区域 二.实现 QHCustomComboBox.h #ifndef QHCUSTOMCOMBOBOX_H #define QHCUSTOMCOMBOBOX_H#include <QLineEdit> #include <QListWidget> #include <QCheckBox> #include <QComboBox>…

R语言生物群落(生态)数据统计分析与绘图

R 语言作的开源、自由、免费等特点使其广泛应用于生物群落数据统计分析。生物群落数据多样而复杂&#xff0c;涉及众多统计分析方法。以生物群落数据分析中的最常用的统计方法回归和混合效应模型、多元统计分析技术及结构方程等数量分析方法为主线&#xff0c;通过多个来自经典…

计算机算法分析与设计(14)---贪心算法(会场安排问题和最优服务次序问题)

文章目录 一、会场安排问题1.1 问题描述1.2 思路分析1.3 例题分析1.4 代码编写 二、最优服务次序问题2.1 问题描述2.2 思路分析2.3 代码编写 一、会场安排问题 1.1 问题描述 假设在足够多的会场里安排一批活动&#xff0c;并希望使用尽可能少的会场。设计一个有效的贪心算法进…

LuatOS-SOC接口文档(air780E)--libgnss - NMEA数据处理

示例 -- 提醒: 本库输出的坐标,均为 WGS84 坐标系 -- 如需要在国内地图使用, 要转换成对应地图的坐标系, 例如 GCJ02 BD09 -- 相关链接: https://lbsyun.baidu.com/index.php?titlecoordinate -- 相关链接: https://www.openluat.com/GPS-Offset.html-- 方案1, 经lua层进行数…

十八、字符串(3)

本章概要 正则表达式 基础创建正则表达式量词CharSequencePattern 和 Matcherfinde()组&#xff08;Groups&#xff09;start() 和 end()Pattern 标记split()替换操作reset()正则表达式与 Java I/0 正则表达式 很久之前&#xff0c;_正则表达式_就已经整合到标准 Unix 工具…

python第三次作业

拿硬币 # 有一堆硬币&#xff0c;每次只能拿一个或者两个&#xff0c;求最少多少次可以拿完硬币 # [10, 8, 5, 3, 27, 99]# 定义如题的带有5个元素的列表&#xff0c;表示五堆硬币 list [10,8,5,3,27,99] # 定义一个变量用来记录拿的次数 get 0 # 将列表遍历,如果元素是双数…

芯片手册自用

UG585 ZYNQ BOOK&#xff1a;Zynq 7000 SoC 技术参考手册 Zynq 7000 SoC Technical Reference Manual • Zynq 7000 SoC Technical Reference Manual (UG585) • 阅读器 • AMD 自适应计算文档门户 (xilinx.com) UG586 MIG:Zynq-7000 SoC 和 7 系列器件内存接口解决方案 ug5…

python网络爬虫实例

目录 1、访问百度 2、输入单词百度翻译 3、豆瓣电影排行榜 4、豆瓣电影top250 5、下载美女壁纸 1、访问百度 from urllib.request import urlopen url"http://www.baidu.com" respurlopen(url)with open("mybaidu.html",mode"w") as f:f.wr…

ilr normalize isometric log-ratio transformation

visium_heart/st_snRNAseq/05_colocalization/create_niches_ct.R at 5b30c7e497e06688a8448afd8d069d2fa70ebcd2 saezlab/visium_heart (github.com) 更多内容&#xff0c;关注微信&#xff1a;生信小博士 The ILR (Isometric Log-Ratio) transformation is used in the anal…

python 动态加载C# 动态库的一些问题

python导入C#动态库问题 背景介绍 我使用的python是3.7&#xff0c;需要调用之前已经用于其他项目的C#编写的动态库(xx.dll).由于调用方法很简单&#xff0c;可以参考下这个调用动态库,这里主要说一下我遇到的问题。 试图加载格式不正确的程序 这个问题实际是由于目标程序和…

Maven 生命周期clean default size含义

clean 负责清理工作&#xff0c;清理上一次项目构建产生的一些文件&#xff0c;如编译后的字节码文件&#xff0c;打包后的jar包文件 default 整一个项目构建的核心工作&#xff0c;如编译&#xff0c;测试&#xff0c;打包&#xff0c;安装&#xff0c;部署等等 size 生成报告…

CLion使用SSH远程连接Linux服务器

最近要一直用实验室的服务器写Linux下的C代码, 本来一直用VScode(SSH)连接服务器, 但是我以前还是用JetBrains的IDE用的多, 毕竟他家的IDE代码提示和功能在某些细节上更加丰富。所以这次我使用了Clion里的远程连接(同样也是SSH工具)连接上了我的服务器, 实现了和VScode上同样的…

Netty基础入门和基本使用

文章目录 一、Netty的异步回调模式1、GenericFutureListener接口2、Future接口3、ChannelFuture的使用 二、Netty中的Reactor反应器模式1、Channel通道组件2、Reactor反应器3、Handler处理器4、Netty的流水线&#xff08;Pipeline&#xff09; 三、Bootstrap启动器类1、父子通道…

【FPGA零基础学习之旅#17】搭建串口收发与储存双口RAM系统

&#x1f389;欢迎来到FPGA专栏~搭建串口收发与储存双口RAM系统 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒&#x1f379; ✨博客主页&#xff1a;小夏与酒的博客 &#x1f388;该系列文章专栏&#xff1a;FPGA学习之旅 文章作者技术和水平有限&#xff0c;如果文中出现错误&#xff0…

初始化固定长度的数组

完全解析Array.apply(null,「length: 1000」) 创建固定长度数组&#xff0c;并且初始化值。直接可以使用map、forEach、reduce等有遍历性质的方法。 如果直接使用Array(81)&#xff0c;map里面的循环不会执行。 //方法一 Array.apply(null, { length: 20 })//方法二 Array(81)…

Linux 开机启动一条PHP命令

当你开机的时候要自动的启动一条PHP命令场景&#xff1a;比如webman 你需要手动启动项目进程 你可以这样操作 流程&#xff1a; 1、准备好你要执行的命令 2、将命令写入一个服务文件 3、开机自启这个服务 实例&#xff1a; 1、比如这个命令 /usr/local/php/bin/php /ho…

Docker:创建主从复制的Redis集群

一、Redis集群 在实际项目里&#xff0c;一般不会简单地只在一台服务器上部署Redis服务器&#xff0c;因为单台Redis服务器不能满足高并发的压力&#xff0c;另外如果该服务器或Redis服务器失效&#xff0c;整个系统就可能崩溃。项目里一般会用主从复制的模式来提升性能&#x…

启动类的注解

SpringBootApplication 是 SpringBoot 将自动扫描应用程序中的组件并配置应用程序 入口点标记&#xff1a;标记应用程序的主类&#xff0c;SpringBoot 应用程序的入口点 自动配置&#xff1a;自动配置应用程序所需的各种设置&#xff0c;包括数据库连接、Web服务器、日志、安…