DDMS工作机制
   DDMS全称Dalvik Debug Monitor Service.DDMS为IDE和emultor及真正的android设备架起来了一座桥梁,Android DDMS将捕捉到终端的ID,并通过adb建立调试器,从而实现发送指令到测试终端的目的
1)每一个Android应用都运行在一个Dalvik虚拟机实例里,而每一个虚拟机实例都是一个独立的进程空间。虚拟机的线程机制,内存分配和管理,Mutex等等都是依赖底层操作系统而实现的。所有Android应用的线程都对应一个Linux线程。
2)DDMS启动时会与ADB之间建立一个device monitoring service用于监控设备。当设备断开或链接时,这个service就会通知DDMS
3)当一个设备链接上时,DDSM和ADB之间又会建立VM monitoring service用于监控设备上的虚拟机。
4)通过ADB Deamon与设备上的虚拟机的debugger建立链接,这样DDMS就开始与虚拟机对话了
 
   通过DDMS看到目标机器上运行的进程/现成状态,可以 android的屏幕到开发机上,可以看进程的heap信息,可以查看logcat信息,可以查看进程分配内存情况,可以像目标机发送短信以及打电话,可以向android发送地理位置信息。可以像gdb一样attach某一个进程调试。 android SDK tools提供了ddms的功能。
    Eclipse安装好adt后会有一个DDMS得perspective.切换到DDMS的视图下:
   <ignore_js_op>
DDMS视图组成
   如上图所示,DDMS视图由3部分组成:左上窗口(device窗口),左下窗口(Emulator Control),右边面板组成。
1、device窗口
device窗口显示了所有当前能找到的所有模拟器或设备列表和每个设备当前正在运行的虚拟机列表。虚拟机是按程序的包命来显示的。device标签栏右上角那一排按钮分别为:调试某个进程,更新某个进程,更新进程堆栈信息,停止某个进程,最后一个图片按 钮时抓取android目前的屏幕。
2、Emulator Control
在这里,可以模拟一些设备状态和行为。
Telephony Status:改变电话语音和数据方案的状态,模拟不同的网络速度。
TelePhony Actions:发送模拟的电话呼叫和短信到模拟器。
Location Controls:发送虚拟的定位数据到模拟器里,我们就可以执行定位之类的操作。可以收工的在Manual里输入经度纬度发送到模拟器,也可以通过 GPX和KML文件。
3、右面板
右边那个窗口中有threads, heap ,Allocation Tracker, file explorer选项卡。分别显示线程统计信息,栈信息,分配跟踪器以及android的文件系统。
1)Threads
线程视图列出了此进程的所有线程。
<ignore_js_op>

ID:虚拟机分配的唯一的线程ID,在Dalvik里,它们是从3开始的奇数。
Tid:linux的线程ID,For the main thread in a process, this will match the process ID.
Stauts:线程状态,

utime:执行用户代码的累计时间
stime:执行系统代码的累计时间
name:线程的名字

2)VM Heap
    展示一些堆的状态,在垃圾回收其间更新。当选定一个虚拟机时, VM Heap视图不能显示数据,可以点击右边面包上的带有绿色的”Show heap updates”按钮,然后在点击”Cause GC “实施垃圾回收更新堆的状态。
3)Allocation Tracker
    在这个视图里,我们可以跟踪每个选中的虚拟机的内存分配情况。点击”Start Tracking”后点击”Get Allocations “就可以看到。
4)File Explorer
通过Device > File Explorer 就打开File Explorer。这里可以浏览文件,上传上载删除文件,当然这是有相应权限限制的。

 
常用工具
1、堆查看
点击Update Heap(更新堆)按钮,获得有关选定虚拟机中堆分配的信息。

<ignore_js_op>
图 2

<ignore_js_op>
图 3
    点击"Cause GC"开始.堆的详细信息被显示出来,并附有针对特定分配类型的分配大小图示。如果您有分配泄漏,这可能是一个很好的检查点,通过观看Heap Size(堆大小)的总体趋势,确保在应用运行期间它不会一直变大。

 
2、Allocation Tracker(分配跟踪器)
Allocation Tracker(分配跟踪器)视图中显示了有关分配的更深层细节。点击“Start Tracking(开始跟踪)”,在应用中执行某个操作,然后点击“Get Allocations(获得分配)”。
<ignore_js_op>
图 4

所示列表按分配排序,首先显示最新的分配。选中它可看到一个关于分配如何创建的堆栈轨迹(stack trace)。
仔细查看分配细节,下面的代码看起来有改进的空间:
dataStr += String.format(" Std. Dev.: %.3f, %.3f, %.3f\n", devX, devY, devZ);
上例可简单重构为下面的代码,节省构造临时char[]的开销。.
dataStrBuilder.append(String.format(" Std. Dev.: %.3f, %.3f, %.3f\n", devX, devY, devZ));

3、Method Profiling(方法分析)

Method Profiling(方法分析)是DDMS的一款工具,对于快速概览应用中时间的消耗分布非常有用,也可用于时间关键型函数的详细查看。

<ignore_js_op>

图 6

在应用运行并执行某个有趣的任务时,如果您想获得更多有关该任务的性能数据,点击“Start Method Profiling(开始方法分析)”。分析器只收集少量数据(没见过超过2或3秒),所以,几分钟后再次单击该图标以停止收集。从DDMS中激活方法分析器可使工具自动使用内部存储来存储分析结果,当捕捉完成后,将它们发送回主机,作进一步分析。

IDE将自动启动Traceview窗口,帮助您在IDE(图6)中分析结果。

<ignore_js_op>

图 6
解析结果是最有趣的部分。单击底部窗格中的方法调用可创建一个层级结构,为您显示目前的方法——先是调用该方法的母方法,然后是从选定方法中调用的子方法。

android调试工具DDMS的更多相关文章

  1. android调试工具DDMS的使用详解

    具体可见http://developer.android.com/tools/debugging/ddms.html. DDMS为IDE和emultor.真正的android设备架起来了一座桥梁.开发 ...

  2. 【转】android调试工具DDMS的使用详解

    具体可见http://developer.android.com/tools/debugging/ddms.html. DDMS为IDE和emultor.真正的android设备架起来了一座桥梁.开发 ...

  3. Android调试工具之ADB

    Android调试工具之ADB 1.     什么是ADB adb的全称为Android Debug Bridge,顾名思义,这个是PC机与Android设备的连接桥.简单的说,就是通过adb ,PC ...

  4. .Net 转战 Android 4.4 日常笔记(6)--Android Studio DDMS用法

    Android Studio DDMS与Eclipse DDMS大同小异,下面了解DDMS的使用 DDMS(Dalvik Debug Monitor Service )Dalvik调试监控服务 DDM ...

  5. Android开发学习——开发调试工具-DDMS应用,ADB进程,Logcat

    DDMS --  Dalvik debug monitor service    调试监控服务 对模拟器进行相关配置. ADB进程   Android debug bridge  建立eclipse和 ...

  6. Android开发学习——开发调试工具-DDMS应用,ADB进程,Logcat,Eclipse Debug调试

    DDMS --  Dalvik debug monitor service    调试监控服务 对模拟器进行相关配置. ADB进程   Android debug bridge  建立eclipse和 ...

  7. Android 调试工具集【转】

    1.TraceView1)功能:用于热点分析和性能优化,分析每个函数占用的CPU时间,调用次数,函数调用关系等 2)方法: a)在程序代码中加入追踪开关 import android.os.Debug ...

  8. Android配置----DDMS 连接真机(己ROOT),用file explore看不到data/data文件夹的解决办法

    Android DDMS 连接真机(己ROOT),用file explore看不到data/data文件夹,问题在于data文件夹没有权限,用360手机助手或豌豆荚也是看不见的. 有以下两种解决方法: ...

  9. Android调试工具及方法

    转自:http://www.cnblogs.com/feisky/archive/2010/01/01/1637566.html Logcat Dump一份系统消息的日志.这些消息包括模拟器抛出错误时 ...

随机推荐

  1. linux设置环境变量的方法

    0.查看环境变量 export 1.直接执行命令,不过只有此次会话有效 export PATH=$PATH:/dir/I/want 2.修改profile文件 在里面加入: export PATH=& ...

  2. c++中-1是true呢还是false呢

    今天想看一下引用c++中的,然后看到网上有问c++中-1是true or false呢?用vc6.0是了一下,是true.vc6.0中应该是非0的都是true,0为false.java我也试了一下,i ...

  3. Asp.Net 操作word 第二篇[推荐]

    引言:前段时间有项目要用c#生成Word格式的计算报告,通过网络查找到很多内容,但是都很凌乱,于是自己决定将具体的步骤总结整理出来,以便于更好的交流和以后相似问题可以迅速的解决! 现通过具体的示例演示 ...

  4. .net如何判断网页是否由搜索引擎蜘蛛访问?

    判断 this.Request.UserAgent Google的蜘蛛: Googlebot百度的蜘蛛:baiduspiderYahoo的蜘蛛:Yahoo SlurpMSN的蜘蛛:MsnbotAlta ...

  5. chm文件右边部分查看不了

    右键属性-> 下面好像有句话是说该文件来自网络为保护您的计算机什么什么的,, 然后你解除锁定就能用了 版权声明:本文为博主原创文章,未经博主允许不得转载.

  6. 引擎设计跟踪(九.14.2h) 开发计划

    以后的开发计划: 完善game runtime code, 跑简单的demo目前只有编辑器的运行流程, 没有游戏/demo流程, 图形的测试主要在编辑器上测试, 现在需要测试android系统的图形, ...

  7. WARNING: Calls to any function that may require a gradient calculation inside a conditional block may return undefined results

    GLES2.0: Some device will give a warning on compling shaders(yet the compling will succeed), and the ...

  8. VS开发工具 不会在异常的地方停止的问题.

    启用"仅我的代码"

  9. 创建第一个MVC

    创建第一个MVC(asp.net)和默认路由设置 Asp.net的MVC已经出到了4.0,我用的是visual studio2013,接下来努力学下MVC,学之前的话我建议大家先去学下三层(分别是DA ...

  10. 如何做到尽可能不使用庞大的jQuery

    jQuery 是现在最流行的 JavaScript 工具库. 据统计,目前全世界 57.3% 的网站使用它.也就是说,10 个网站里面,有 6 个使用 jQuery.如果只考察使用工具库的网站,这个比 ...