首页 > 其他分享 >android调试工具DDMS

android调试工具DDMS

时间:2022-12-09 18:03:42浏览次数:74  
标签:%. DDMS 虚拟机 3f 线程 android 分配 调试


   DDMS全称Dalvik Debug Monitor Service.DDMS为IDE和emultor及真正的android设备架起来了一座桥梁,Android DDMS将捕捉到终端的ID,并通过adb建立调试器,从而实现发送指令到测试终端的目的。(请发邮件到 ​​[email protected]​​  获得最新翻强软件。)

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就开始与虚拟机对话了


 

  

   ​

android调试工具DDMS_android

DDMS视图组成

 

1、device窗口
device窗口显示了所有当前能找到的所有模拟器或设备列表和每个设备当前正在运行的虚拟机列表。虚拟机是按程序的包命来显示的。device标签栏右上角那一排按钮分别为:调试某个进程,更新某个进程,更新进程堆栈信息,停止某个进程,最后一个图片按 钮时抓取android目前的屏幕。

2、Emulator Control
在这里,可以模拟一些设备状态和行为。
Telephony Status:改变电话语音和数据方案的状态,模拟不同的网络速度。
TelePhony Actions:发送模拟的电话呼叫和短信到模拟器。
Location Controls:发送虚拟的定位数据到模拟器里,我们就可以执行定位之类的操作。可以收工的在Manual里输入经度纬度发送到模拟器,也可以通过 GPX和KML文件。

3、右面板

Allocation Tracker, file explorer选项卡。分别显示线程统计信息,栈信息,分配跟踪器以及android的文件系统。
1)Threads
线程视图列出了此进程的所有线程。

android调试工具DDMS_数据_02

​​
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(更新堆)按钮,获得有关选定虚拟机中堆分配的信息。



图 2



图 3

   


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


图 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的一款工具,对于快速概览应用中时间的消耗分布非常有用,也可用于时间关键型函数的详细查看。




图 6


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


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




图 6

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

标签:%.,DDMS,虚拟机,3f,线程,android,分配,调试
From: https://blog.51cto.com/u_15907753/5926329

相关文章

  • Android 装载器---重启装载器
    在使用initLoader()方法时,如果指定ID的装载器存在,就使用这个既存的装载器,否则会创建一个新的。但是有些时候你会想要废弃旧的数据并重启装载器。你可以使用restartLoader(......
  • android 动画xml属性总结
    XML中 alpha渐变透明度动画效果scale渐变尺寸伸缩动画效果translate画面转换位置移动动画效果rotate画面转移旋转动画效果JavaCode中 AlphaAnimation渐变透明度动画效果S......
  • [译]Android防止内存的八种方法(下)
    在上一篇​​Android内存泄漏的八种可能(上)​​中,我们讨论了八种容易发生内存泄漏的代码。其中,尤其严重的是泄漏​​Activity​​对象,因为它占用了大量系统内存。不管内存泄......
  • Android中的EditText默认时不弹出软键盘的方法
    在做项目过程中,父Activity中用ViewPager中的子Activity EditText默认弹出软键盘。这是想屏蔽软键盘应该从 父Activity中处理。处理子Activity达不到效果。......
  • [译]Android内存泄漏的八种可能(上)
    ​​原文EightWaysYourAndroidAppCanLeakMemor​​Java是垃圾回收语言的一种,其优点是开发者无需特意管理内存分配,降低了应用由于局部故障(segmentationfault)导致......
  • vscode 在debug模式给被调试程序传递环境变量
      https://blog.csdn.net/jinxiaonian11/article/details/127965187 C/C++"environment":[{"name":"ENV_TEST","value":"1"},{"name":"T......
  • Android的架构设计
    AS历史版本下载地址https://developer.android.google.cn/studio/archiveAndroid的架构设计干Android也有一点的年头,特此记录一下自己理解的App架构设计。......
  • android 网络可用否,以及类型
    在Android平台上开发基于网络的应用,必然需要去判断当前的网络连接情况。下面的代码,作为例子,详细说明了对于当前网络情况的判断。先看一个自己定义的应用类。viewplaincop......
  • android 进程管理
    系统会对进程的重要性进行评估,并将重要性以“oom_adj”这个数值表示出来,赋予各个进程;(系统会根据“oom_adj”来判断需要结束哪些进程,一般来说,“oom_adj”的值越大,该进程被系......
  • android webView 文字、图片分别加载。乱码问题
     1.加载url前,设置图片阻塞1.webSettings.setBlockNetworkImage(true);2.加载完毕后,关闭图片阻塞1.publicvoidonPageFinished(WebViewview,Stringurl){2.......