Pro Android学习笔记(五三):调试和分析(1):Debug视图和DDMS视图
来源:互联网 发布:电动汽车发展前景 知乎 编辑:程序博客网 时间:2024/06/05 17:41
我们将基于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视图
- 调试和分析(1):Debug视图和DDMS视图
- Android开发学习笔记:浅谈DDMS视图
- DDMS视图和Button
- SpringMVC学习(五) 视图和视图解析器
- Javascript MVC 学习笔记(三) 视图和模板
- Pro Android学习笔记(五四):调试和分析(2):View层次结构
- Eclipse 调试器和Debug 视图
- Eclipse 调试器和 Debug 视图
- Eclipse 调试器和 Debug 视图
- Eclipse调试器和Debug 视图
- Eclipse调试器和debug视图
- Pro Android学习笔记(五五):调试和分析(3):adb命令、模拟器控制台和StrictMode
- mysql学习笔记(五)索引、视图,导入和导出,备份和恢复
- 视图解析器中配置前缀和后缀---SpringMVC学习笔记(五)
- 视图解析器中配置前缀和后缀---SpringMVC学习笔记(五)
- Pro Android学习笔记(二五):用户界面和控制(13):LinearLayout和TableLayout
- Pro Android学习笔记(六五):安全和权限(2):权限和自定义权限
- C 内存分配
- Android上传文件至服务器
- 多态的好处?
- FLEX 项目开发总结(今天的哈,没有具体的主题)
- TCP/IP协议簇总结
- Pro Android学习笔记(五三):调试和分析(1):Debug视图和DDMS视图
- xhprof安装以及php程序性能测试
- Android启动无线与网络设置界面
- Git 使用教程(4)—— Git 常用命令集合
- Linux平台代码覆盖率测试工具GCOV简介
- undefined reference to `get_driver_instance'
- Eclipse 导入maven项目出现 Unsupported IClasspathEntry kind=4
- sublime2 安装配置
- CSS 兼容性解决方案