【转】Pro Android学习笔记(五三):调试和分析(1):Debug视图和DDMS视图
我们将基于Eclipse了解如何对应用进行调试,即debug。Android插件提供的DDMS可以给予很多帮助,包括视图(那个设备被连接),模拟器控制(发送电话呼叫,SMS短信,GPS信息),文件浏览器(查看/传输设备上的文件),thread,heap和allocation跟踪器。
在一个真实设备调测应用,除了将设备设置为USB调测模式,还需要在AndroidManifest.xml的application下设置android:debuggable="true",但这并不需要人工去设置,当从Eclipse直接部署设备或模拟器是,自动设置为true,如果是产品的发布版本,ADT自动设为false。
Debug视图
对于Eclipse,本身就提供debug功能,支持断点设置,可以查看参数值等等,这些都是常规的使用。

DDMS视图
DDMS即Dalvik Debug Monitor Server。如下图所示,可以用于查看应用的运行情况,如线程、存储以及其他统计数据。
查看应用运行状态

点击“Cause GC”将开始手机信息,并随着程序运行增加新的信息。如果在Heap的Tab中发现提示“DDMS Heap updates are NOT ENABLED for this client”,则在下面配置中将相关的开关(Thread updates enabled by default)。关于DDMS使用过程中出现问题,可以参考:http://www.developer.com/ws/android/development-tools/android-ddms-views-tutorial.html

我们可以监控设备上的应用,即时没有源代码,当然对于在真实设备上的释放版本应用,需要将AndroidManiefest.xml中将android:debuggable设置为true。
进入debug状态
在左上角有一个绿色图标,点击可在运行的过程中进入debug状态,也就是之前介绍Debug视图,可以进行断点检查。

HPROF
HPROF是dump a heap and CPU Profiling Agent,可用于查看内存泄漏。如下图,可以用文件保持下来,通过MAT插件打开。

Thread信息
查看选定应用的thread信息如下:

Method信息
在“Update Thread”按钮旁边是“Method profiling”按钮,这是个开关按就,有start和stop两个状态,用于收集应用中methord的信息。我们start它,然后stop它,就出现了TraceView,如下图所示,在右边的trace view中显示详细信息,资源使用的情况,执行的时间等,我们可以据此分析性能瓶颈。

在这里我们可以看到所有方法的信息。我们也可以在代码中使用android.os.Debug类选择要跟踪的代码,如下所示,Android会在设备的SD卡上创建一个basename.trace的文件,该文件可以在SDK/tools的traceview中查看。
Debug.startMethodTracing( "basename" );
... 要跟踪的代码 ...
Debug.stopMethodTracing();
Stop
接着旁边是“stop”按钮,将关闭该应用进程。返回键只影响activity,而DDMS上Stop是关闭整个应用。
截图
接着旁边,照相机图标是“Screen Capture”按钮,可以在此考屏。
UI层次架构信息
再旁边是UI层次结构,可以清晰看到UI层次结构,如下:

其它的
再过去,就是下来菜单,如下。当中Reset adb可以帮助我们同步设备,相当于命令行中的adb kill-server和adb start-server。

Tab中提供的功能
在右边的tab中,提供各类的跟踪和设置。Allocation Tracker可以跟踪内存分配,点击还可以获得具体有哪个方法,代码中的哪一行触发。File Exploer运行我们与设备/模拟器之间进行文件传递。而Emulator Control是较为常用的功能,可以模拟来电、短信和GPS位置信息。这些在未来的学习中都会用到。

相关链接: 我的Android开发相关文章
【转】Pro Android学习笔记(五三):调试和分析(1):Debug视图和DDMS视图的更多相关文章
- 【转】Pro Android学习笔记(三十):Menu(1):了解Menu
目录(?)[-] 创建Menu MenuItem的属性itemId MenuItem的属性groupId MenuItem的属性orderId MenuItem的属性可选属性 Menu触发 onOpt ...
- 【转】Pro Android学习笔记(三):了解Android资源(上)
在Android开发中,资源包括文件或者值,它们和执行应用捆绑,无需在源代码中写死,因此我们可以改变或替换他们,而无需对应用重新编译. 了解资源构成 参考阅读Android学习笔记(三八):资源res ...
- 【转】 Pro Android学习笔记(三二):Menu(3):Context菜单
目录(?)[-] 什么是Context menu 注册View带有Context menu 填Context菜单内容 Context菜单点击触发 什么是Context menu 在桌面电脑,我们都很熟 ...
- 【转】 Pro Android学习笔记(三三):Menu(4):Alternative菜单
目录(?)[-] 什么是Alternative menu替代菜单 小例子说明 Alternative menu代码 关于Category和规范代码写法 关于flags 多个匹配的itemId等参数 什 ...
- 【转】 Pro Android学习笔记(五五):调试和分析(3):adb命令、模拟器控制台和StrictMode
目录(?)[-] adb命令 模拟器Console StrictMode adb命令 我们在学习SQLite的使用,介绍过部分adb命令的使用,见Pro Android学习笔记(五):了解Conten ...
- 【转】 Pro Android学习笔记(五六):配置变化
目录(?)[-] Activity的destorycreate过程 Fragment的destorycreate过程 onSaveInstanceState saveFragmentInstanceS ...
- 【转】 Pro Android学习笔记(五二):ActionBar(5):list模式
可以在action bar中加入spinner的下来菜单,有关spinner,可以参考Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner. list的样式和 ...
- 【转】Pro Android学习笔记(二五):用户界面和控制(13):LinearLayout和TableLayout
目录(?)[-] 布局Layout 线性布局LinearLayout 表格布局TableLayout 布局Layout Layout是容器,用于对所包含的view进行布局.layout是view的子类 ...
- 【转】 Pro Android学习笔记(七四):HTTP服务(8):使用后台线程AsyncTask
目录(?)[-] 5秒超时异常 AsyncTask 实现AsyncTask抽象类 对AsyncTask的调用 在哪里运行 其他重要method 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注 ...
- 【转】 Pro Android学习笔记(六七):HTTP服务(1):HTTP GET
目录(?)[-] HTTP GET小例子 简单小例子 出现异常NetworkOnMainThreadException 通过StrictMode进行处理 URL带键值对 Andriod应用可利用ser ...
随机推荐
- 摇一摇js代码
init(); var SHAKE_THRESHOLD = 3000; var last_update = 0; var x = y = z = last_x = last_y = last_z = ...
- 事件监听机制——列出指定目录内容、添加Dialog对话框
事件监听机制理解与Dialog练习 利用Java语言,仿照我的电脑目录进行打开目录,输入文件路径,查看该路径下所有的文件,设置两个文本框,一个转到按钮,当点击转到按钮时,查看路径是否正确,若正确在第二 ...
- HDU2612 -暑假集训-搜索进阶N
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82828#problem/N这两天总是因为一些小错误耽误时间,我希望自己可以细心点.珍惜 ...
- 算法(Algorithms)第4版 练习 1.5.3
id数组和treesize数组变化情况: 0 1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1 1 1 10 components 9 0 1 2 3 4 5 6 7 8 9 1 1 ...
- HDU3294 Girls' research
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- Codeforces Round #335 (Div. 2) C. Sorting Railway Cars
C. Sorting Railway Cars time limit per test 2 seconds memory limit per test 256 megabytes input stan ...
- nginx+tomcat负载均衡搭建
一. 单独部署tomcat和nginx Nginx版本:nginx-1.13.5 Tomcat版本:apache-tomcat-8.5.8 操作系统:win10 必须先部署一个tomcat服 ...
- BZOJ 1096 [ZJOI2007]仓库建设:斜率优化dp
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1096 题意: 有n个工厂,从左往右排成一排,分别编号1到n. 每个工厂里有p[i]件产品, ...
- 分享知识-快乐自己:Struts2 前台日期到后台的日期格式转换
案例目录: 关键代码展示: DateConverter: package com.mlq.util; import com.opensymphony.xwork2.conversion.TypeCon ...
- 详细的.Net并行编程高级教程--Parallel
一直觉得自己对并发了解不够深入,特别是看了<代码整洁之道>觉得自己有必要好好学学并发编程,因为性能也是衡量代码整洁的一大标准.而且在<失控>这本书中也多次提到并发,不管是计算机 ...