Android 调试工具 DDMS的使用

DDMS工具使用 往期推荐 快速定位关键代码 Smali文件详解 Java层逆向分析-Dalvik字节码 修改资源去广告 1.DDMS工具的介绍 DDMS的全称是Dalvik Debug Monitor Service,是Android开发环境中的Dalvik虚拟机调试监控服务。 DDMS的作用是提供截屏,查看线程和堆的信息,查看logcat日志信息等等。 2. 2DDMS工具的打开方式 : 由于DDMS 工具存放在SDK工具中的tools路径下,所以呢,在使用DDMS工具之前,需要先下载SDK工具。下载完成后解压安装包,并 阅读详情

DDMS 的全称是Dalvik Debug Monitor Service,它为我们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收 SMS、虚拟地理坐标等等。

如何启动 DDMS

DDMS 工具存放在SDK – tools/路径下,启动DDMS方法如下:

  1. 直接双击ddms.bat运行;
  2. 在Eclipes调试程序的过程中启动DDMS,在Eclipes中的界面如下:
    Eclipes-DDMS
    选择“Other”,界面如下:
    Open-Perspective
    双击DDMS就可以启动了。

DDMS对Emulator和外接测试机有同等效用。如果系统检测到它们(VM)同时运行,那么DDMS将会默认指向 Emulator。以上2种启动后的操作有些不一样,建议分别尝试下。

DDMS 的工作原理

DDMS将搭建起IDE与测试终端(Emulator 或者connected device)的链接,它们应用各自独立的端口监听调试器的信息,DDMS可以实时监测到测试终端的连接情况。当有新的测试终端连接后,DDMS将捕捉到 终端的ID,并通过adb建立调试器,从而实现发送指令到测试终端的目的。
DDMS-Device
DDMS监听第一个终端App进程的端口为8600,APP进程将分配8601,如果有更多终端或者更多APP进程将按照这个顺序依次类推。DDMS通过 8700端口(”base port”)接收所有终端的指令。

下边通过GUI详细了解DDMS的一些功能

Devices

在GUI的左上角可以看到标签为”Devices”的面板,这里可以查看到所有与DDMS连 接的终端的详细信息,以及每个终端正在运行的APP进程,每个进程最右边相对应的是与调试器链接的端口。因为Android是基于Linux内核开发的操 作平台,同时也保留了Linux中特有的进程ID,它介于进程名和端口号之间。
DDMS-Device
在面板的右上角有一排很重要的按键他们分别是Debug the selected process、Update Threads、Update Heap、Stop Process和ScreenShot。

Emulator Control

通过这个面板的一些功能可以非常容易的使测试终端模拟真实手机所具备的一些交互功能,比如:接听电话,根据选项模拟各种不同网络情况,模拟接受 SMS消息和发送虚拟地址坐标用于测试GPS功能等。
DDMS-Control
Telephony Status: 通过选项模拟语音质量以及信号连接模式。
Telephony Actions: 模拟电话接听和发送SMS到测试终端。
Location Control: 模拟地理坐标或者模拟动态的路线坐标变化并显示预设的地理标识,可以通过以下3种方式:

  • Manual: 手动为终端发送二维经纬坐标。
  • GPX: 通过GPX文件导入序列动态变化地理坐标,从而模拟行进中GPS变化的数值。
  • KML: 通过KML文件导入独特的地理标识,并以动态形式根据变化的地理坐标显示在测试终端。

Threads、Heap、File Exporler

DDMS-THF
这几项,我们在其他开发工具中也经常使用,就在不此详细说明了。

 

Thread

线程视图列出了此进程的所有线程。

ID:虚拟机分配的唯一的线程ID,在Dalvik里,它们是从3开始的奇数。
Tid:linux的线程ID,For the main thread in a process, this will match the process ID.
Stauts:线程状态,
running:正在执行程序代码
sleeping:执行了Thread.sleep()
monitor:等待接受一个监听锁。
wait:Object.wait()
native:正在执行native代码
vmwait:等待虚拟机
zombie:线程在垂死的进程
init:线程在初始化(我们不可能看到)
starting:线程正在启动(我们不可能看到)
utime:执行用户代码的累计时间
stime:执行系统代码的累计时间
name:线程的名字


 

 

Heap

用 Heap监测应用进程使用内存情况的步骤如下:
1. 启动eclipse后,切换到DDMS透视图,并确认Devices视图、Heap视图都是打开的;
2. 将手机通过USB链接至电脑,链接时需要确认手机是处于“USB调试”模式,而不是作为“Mass Storage”;
3. 链接成功后,在DDMS的Devices视图中将会显示手机设备的序列号,以及设备中正在运行的部分进程信息;
4. 点击选中想要监测的进程,比如system_process进程;
5. 点击选中Devices视图界面中最上方一排图标中的“Update Heap”图标;
6. 点击Heap视图中的“Cause GC”按钮;
7. 此时在Heap视图中就会看到当前选中的进程的内存使用量的详细情况。
说明:
a) 点击“Cause GC”按钮相当于向虚拟机请求了一次gc操作;
b) 当内存使用信息第一次显示以后,无须再不断的点击“Cause GC”,Heap视图界面会定时刷新,在对应用的不断的操作过程中就可以看到内存使用的变化;
c) 内存使用信息的各项参数根据名称即可知道其意思,在此不再赘述。
  如何才能知道我们的程序是否有内存泄漏的可能性呢。这里需要注意一个值:Heap视图中部有一个Type叫做data object,即数据对象,也就是我们的程序中大量存在的类类型的对象。在data object一行中有一列是“Total Size”,其值就是当前进程中所有Java数据对象的内存总量,一般情况下,这个值的大小决定了是否会有内存泄漏。可以这样判断:
a) 不断的操作当前应用,同时注意观察data object的Total Size值;
b) 正常情况下Total Size值都会稳定在一个有限的范围内,也就是说由于程序中的的代码良好,没有造成对象不被垃圾回收的情况,所以说虽然我们不断的操作会不断的生成很多对 象,而在虚拟机不断的进行GC的过程中,这些对象都被回收了,内存占用量会会落到一个稳定的水平;
c) 反之如果代码中存在没有释放对象引用的情况,则data object的Total Size值在每次GC后不会有明显的回落,随着操作次数的增多Total Size的值会越来越大,
  直到到达一个上限后导致进程被kill掉。
d) 此处已system_process进程为例,在我的测试环境中system_process进程所占用的内存的data object的Total Size正常情况下会稳定在2.2~2.8之间,而当其值超过3.55后进程就会被kill。

 

来自: http://apps.hi.baidu.com/share/detail/32190286

 


 

在DDMS里检查heap的使用情况

 

Dalvik Debug Monitor Server(DDMS)是主要的Android调试工具之一,也是ADT Eclipse plug-in 的一部分,独立的程序版本也可以在Android SDK的根目录下的tools/下面找到。关于DDMS更多的信息,请参考使用DDMS 。

 

我们来使用DDMS检查这个应用的heap使用情况。你可以使用下面的两种方法启动DDMS:

  • from Eclipse: click Window > Open Perspective > Other... > DDMS
  • or from the command line: run ddms (or ./ddms on Mac/Linux) in the tools/ directory

 

在左边的面板选择进程com.example.android.hcgallery,然后在 工具条上边点击Show heap updates按钮。这个时候切换到DDMS的VM Heap分页。它会显示每次gc后heap内存的一些基本数据。要看第一次gc后的数据内容,点击Cause GC按钮:

 

 

我们可以看到现在的值(Allocated列)是有一些超过8MB。现在滑动相片,这时看到 数据在增大。因为只有仅仅13个相片在程序里边,所以泄露的内存只有这么大。在某种程度上来说,这时最坏的一种内存泄露,因为我们没法得到 OutOfMemoryError来提醒我们说现在内存溢出了。

 

生成heap dump

 

我们现在使用heap dump来追踪这个问题。点击DDMS工具条上面的Dump HPROF文件按钮,选择文件存储位置,然后在运行hprof-conv。在这个例子里我们使用独立的MAT版本(版本1.0.1),从MAT站点下载 。

 

如果你使用ADT(它包含DDMS的插件)同时也在eclipse里面安装了MAT,点击“dump HPROF”按钮将会自动地做转换(用hprof-conv)同时会在eclipse里面打开转换后的hprof文件(它其实用MAT打开)。

 

用MAT分析heap dumps

启动MAT然后加载刚才我们生成的HPROF文件。MAT是一个强大的工具,讲述它所有的特性超出了本文的范围,所以我只想演示一种你可以用来检测 泄露的方法:直方图(Histogram)视图。它显示了一个可以排序的类实例的列表,内容包括:shallow heap(所有实例的内存使用总和),或者retained heap(所有类实例被分配的内存总和,里面也包括他们所有引用的对象)。

 

如果我们按照shallow heap排序,我们可以看到byte[]实例在顶端。自从Android3.0(Honeycomb),Bitmap的像素数据被存储在byte数组里 (之前是被存储在Dalvik的heap里),所以基于这个对象的大小来判断,不用说它一定是我们泄露掉的bitmap。

 

右击byte[]类然后选择List Objects > with incoming references。它会生成一个heap上的所有byte数组的列表,在列表里,我们可以按照Shallow Heap的使用情况来排序。

 

选择并展开一个比较大的对象,它将展示从根到这个对象的路径--就是一条保证对象有效的链条。注意看,这个就是我们的bitmap缓存!

 

MAT不会明确告诉我们这就是泄露,因为它也不知道这个东西是不是程序还需要的,只有程序员知道。在这个案例里面,缓存使用的大量的内存会影响到后面的应用程序,所以我们可以考虑限制缓存的大小。

 

使用MAT比较heap dumps

 

调试内存泄露时,有时候适时比较2个地方的heap状态是很有用的。这时你就需要生成2个单独的HPROF文件(不要忘了转换格式)。下面是一些关于如何在MAT里比较2个heap dumps的内容(有一点复杂):

  1. 第一个HPROF 文件(using File > Open Heap Dump ).
  2. 打开 Histogram view.
  3. 在Navigation History view里 (如果看不到就从Window > Navigation History找 ), 右击histogram 然后选择Add to Compare Basket .
  4. 打开第二个HPROF 文件然后重做步骤2和3.
  5. 切换到Compare Basket view, 然后点击Compare the Results (视图右上角的红色"!"图标)。

 

 

File Exporler

通过File Exporler可以查看Android模拟器中的文件,可以很方便的导入/出文件。

Locate、Console

DDMS-LC
Locate:显示输出的调试信息,详见Android下如何调 试程序?;
Console:是Android模拟器输出的信息,加载程序等信息;

使用DDMS模拟发送短信,操作过程如下:

在Emulator Control\Telephony Actions 中输入以下内容
DDMS-SMS
单击发送后,在Android模拟器中打开Messaging,看到下面的短信:
DDMS-Message
单击新短信,详细查看短信内容:
AVD-Message
中文显示为乱码,在未来的开发中,我们必须要注意中文字符的问题。

android SDK中的ddms使用详解 一、查看线程信息1、展开左侧设备节点,选择进程;2、点击更新线程信息图标;注意:如果你没有运行或调试程序的话,这些图标是不可用的!3、右侧选择“Threads”标签; 二、查看堆栈信息1、展开左侧设备节点,选择进程;2、点击更新堆栈信息图标;注意:如果你没有运行或调试程序的话,这些图标是不可用的!3、右侧选择“Heap”标签;4、点击“Cause GC”按钮; 三、性能分析工具(分配跟踪器)DDM... 阅读详情

相关推荐

Unity安卓应用闪退-使用DDMS工具查看安卓日志/ADB真机调试

前言 最近遇到一个应用闪退问题,在某些机型和mumu模拟器上会出现,而其他机型和模拟器都是正常的,从Unity代码层面并没有发现问题,只能利用安卓调试看看了 工具 首先需要的工具: DDMS:查看安卓日志 ADB:连接手机/模拟器调试 直接去官网下载SDK,需要的工具都在里面。Android SDK下载 安装好之后如图所示:根目录;ADB;DDMS 系统配置好环境变量,Path: E:/A...

cscscs007的博客 2912

Android开发调试必备 - DDMS

一、真机调试的两个必备条件 (1)手机打开开发者模式并且运行USB调试 (2)PC上装好手机对应的驱动(现在的安卓手机连接电脑一般都需要安装驱动,让电脑能够驱动安卓手机) 二、DDMS(DalvikDebugMonitorServer)四个主要窗口 Devices:当前电脑接入的android设备,及设备运行的进程,可以结束进程,设置程序为debug模式,截屏等。 LogCat:会打印系统运行过程中所有的日志信息 File Explorer:文件夹列表 data/app:第

顺其自然~专栏 4706

Android Studio中的DDMS使用指南

通过深入了解和使用DDMS,开发人员可以找到并解决潜在的问题,提升应用程序的质量和性能。然后,你可以使用Android Studio的"Android Profiler"工具分析该文件,并查看应用程序的内存使用情况。为了帮助开发人员进行调试和分析应用程序的性能,Android Studio提供了一个强大的调试工具,即Dalvik Debug Monitor Server(DDMS)。一旦选定设备,你可以在左侧的面板中选择不同的选项来查看不同的信息。在DDMS中选择你感兴趣的选项,并查看相应的信息。

ByteWhiz的博客 1960

安卓逆向_8 --- Android 调试工具 DDMS 和 Monitor ( 去掉 "车来了" app 的广告 )

From:https://www.e-learn.cn/topic/3527658 Android SDK 中的 ddms 使用详解:https://blog.youkuaiyun.com/x83853684/article/details/80643131 ADB、Android Monitor、DDMS、HierarchyViewer、MAT、SysTrac...

墨鱼菜鸡 9822

android调试工具DDMS的使用详解

本篇文章对android调试工具DDMS的使用进行了详细的分析介绍。需要的朋友参考下

STM32Cubemx-H7-17-麦克纳姆轮驱动

我们先看.h,知道哪些函数会有哪些功能和宏定义参数首先 是在.h的宏定义处定义引脚编号,比如tb6612控制方向的引脚,以及设定了哪个定时器作为pwm输出,还有编码计次的中断引脚/* 硬件相关宏定义 *//*1 前进方向往上 42 3*/// TB6612 方向引脚定义/* 定时器相关宏定义 *//* 编码器相关宏定义 */把自己的引脚根据原理图填对应,方向引脚也是,如果发现反转就把对应的引脚定义反过来,编码也是,编码我们用一个引脚就好,都在cubemx配置好。

m0_74211379的博客 1422

安卓开发学习11-1:Android程序调试:DDMS工具使用

应用场景启动DDMSDDMS常用功能日志日志面板日志过滤自定义输出日志信息日志优先级Log类使用日志的级别过滤器堆内存查看器堆内存查看data object文件管理器模拟器控制器解析屏幕截取 应用场景 如下在调试程序的时候出现程序停止的异常,那么想要知道其中的原因可以使用DDMS 现在是Android Studio 2020.3版本,已经删除了DDMS,其中的功能已经集成到了一些监控的功能中,这里介绍是离线查看DDMS。对于一个开发好的APP出现上述异常,那么就可以将手机连接到电脑,然后打开DDMS进行.

qq_43967413的博客 1704

S7-1200 数据日志

数据日志文件按照标准 CSV 格式存储在 S7-1200 CPU 装载存储器或 S7-1200 SIMATIC 存储卡中。分别可通过 PLC Web 服务器或将数据文件传送到 PC 进行管理、查看。 一、测试目的: 下面以数据日志文件存储在 S7-1200 CPU 装载存储器中,使用PLC Web 服务器进行管理为例,实现下述功能: (1)执行“DataLogging”指令将产品型号“Type”,长度“Length”,宽度“Width”三个变量值写入到数据日志文件; (2)当写入的条数达到设定的3条

qq_43029096的博客 2541

【Android 开发入门】Android设备监视器之调试工具DDMS使用初探

Android Studio提供了一个很实用的工具Android设备监视器(Android device monitor),该监视器中最常用的一个工具就是DDMS(Dalvik Debug Monitor Service),是 Android 开发环境中的Dalvik虚拟机调试监控服务。可以进行的操作有:为测试设备截屏,查看特定进程中正在运行的线程以及堆栈信息、Logcat、广播状态信息、模拟电话

无知人生,记录点滴 1万+

如何设计一个处理物联网设备数据流的后端系统。

设计一个处理物联网设备数据流的后端系统,需要综合考虑设备数据采集、传输、处理、存储等多个方面,保证系统能够处理海量数据,具备高可用性、扩展性和安全性。合理选择适当的技术架构和工具(如MQTT、Kafka、InfluxDB等),并确保系统能够灵活应对不断变化的业务需求和设备接入。

weixin_53227829的博客 839

SKF SimPro Quick 4.8.1发布

发布说明可以在SimPro手册的SKF SimPro Quick应用程序的一般部分下找到(帮助→SKF SimPro快速手册→一般→发布说明)。请删除旧版本,请备份您存储在C:\SKF SimPro xxx\files文件夹中的文件以及所有自定义报告模板和表格。我们很高兴地通知您,我们的轴承应用工程软件SKF SimPro Quick 4.8.1可供下载。将新的安装文件下载到本地计算机后,双击它安装向导将打开(按照说明操作)3.安装后,在本地机器上启动SKF SimPro Expert软件。

小韩的博客 1818

android调试工具DDMS使用总结

1.debug process,断点调试程序: 个人总结断点调试程序有2种情况。1.eclipse中的project代码编译正确,应用运行在android系统上,这个时候调试就像普通的java或者vc6.0断点调试一样。2.导入的代码因为接口等原因一堆报错比如android的phone模块,或者这个project就不能再eclipse上编译比如framework中的某个模块。这个时候的调试步骤就需

lijie815917的专栏 735

华为OD机试 - 名字的漂亮度(Java 牛客练习题)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个不同字母拥有相同的“漂亮度”。给出一个字符串,该字符串仅由小写字母组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。给出多个字符串,计算每个字符串最大可能的“漂亮度”。第一行一个整数N,接下来N行每行一个字符串。数据范围:输入的名字长度满足。每个字符串可能的最大漂亮程度。

学Java,找哪吒 1786

android入门(四) 调试工具DDMS的使用

DDMS 的全称是Dalvik Debug Monitor Service,即Dalvik调试监控服务,是一个可视化的调试监控工具。(Dalvik是Android平台的Java虚拟机,可以支持 .dex(即Dalvik Executable)格式的Java应用程序的运行)。它主要是对系统运行后台日志的监控,还有系统线程,模拟器状态的监控。此外,它还可以模拟收发短信,拨打电话和发送GPS位置信息等。在

二进制 970

CVAEGAN实现锂离子电池EIS数据增强:基于健康状态的阻抗谱生成

本文提出了一种基于CVAEGAN的锂离子电池EIS数据增强方法。该方法结合了变分自编码器和生成对抗网络的优点,能够根据指定的健康状态(SoH)生成高质量的EIS阻抗谱数据。文章详细介绍了数据预处理流程、模型架构设计(包括编码器、解码器和判别器),并提供了完整的PyTorch实现代码。通过条件生成的方式,该方法可以有效解决电池健康评估中标注数据不足的问题,为基于数据驱动的电池诊断提供更丰富的训练样本。实验结果表明,生成的EIS数据具有良好的真实性和多样性,可用于增强电池健康状态评估模型的性能。

huanghm88的专栏 498

GEE高阶应用——如何绘制2000-2022年土地利用变化轨迹时序图

土地利用变化是指在一定时间范围内,土地利用类型和结构发生的变化。时序变化是指这种变化随时间的推移而发生的序列变化。土地利用变化轨迹的时序变化具体介绍如下:首先,土地利用变化轨迹的时序变化体现在土地利用类型的演变上。在过去的几十年里,随着人口的增加、经济的发展和城市化的推进,土地利用类型发生了显著的变化。传统的农田逐渐减少,而城市、工业、交通、居住等用地的面积不断扩大。同时,随着环境保护意识的提高,生态保护用地、森林、湿地等绿色用地的面积也在增加。

此星光明博客 1113

安卓开发调试工具DDMS使用介绍

1.LogCat: LogCat用于显示程序运行时的日志信息,一般包括debug、info、warn和error,上面5个圆圈形按钮分别是: V -- verbose:查看全部日志信息 D -- debug:查看debug、info、warn和error信息 I -- info:查看info、warn和error信息 W -- warn:查看warn和error信息

影儿的专栏 1745

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

使用DDMS测试安卓手机APP的性能(android)

使用DDMS测试安卓手机APP的性能(android) 安装/配置: 通过另外一个工具也可以测试手机客户端APP的性能,这就是android开发包中的DDMS工具(Dalvik Debug Monitor Service),先来说一下android开发包的安装: 1、 首先安装JDK,1.5以上的版本 2、 在安装完JDK 后,就需要下载及安装Android SDK,即: an

hualusiyu的专栏 924

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

android ddms快捷键,请问Android Studio中怎么使用DDMS工具

噜噜哒随着 android studio 的广泛使用,开发人员对相关工具的使用需求更加凸显。昨天在一个android studio教程网站上,看到一篇有关DDMS工具使用的相关知识,感觉很不错,分享给大家,一起来看看吧,新技能get走起~~首先,我们需要了解的是DDMS工具是个什么鬼?其实,DDMS(Dalvik Debug Monitor Service),是 Android开发环境中的Dalv...

weixin_39672979的博客 152

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: Android开发之旅: Intents和Intent Filters(实例部分)
下一篇: android JNI 示例详解
xing...
博客等级 码龄17年 30粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值