• 【转】Pro Android学习笔记(五三):调试和分析(1):Debug视图和DDMS视图


    目录(?)[-]

    1. Debug视图
    2. DDMS视图
      1. 查看应用运行状态
      2. 进入debug状态
      3. HPROF
      4. Thread信息
      5. Method信息
      6. Stop
      7. 截图
      8. UI层次架构信息
      9. 其它的
      10. Tab中提供的功能

    我们将基于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开发相关文章

  • 相关阅读:
    HEAP[xxx.exe]:Invalid Address specified to RtlValidateHeap 错误的解决方法总结
    C语言中对于结构的定义一般放在.h中还是.c中
    MFC线程(三):线程同步事件(event)与互斥(mutex)
    AfxOleInit()和::CoInitialize(NULL)区别
    C++格式化字符函数
    使用数据库连接池优化程序性能
    一个经试用效果非常不错的数据库连接池--JAVA
    VC:CString用法整理(转载)
    Apache配置多个监听端口和不同的网站目录的简单方法(转)
    Dedesql数据库类详解
  • 原文地址:https://www.cnblogs.com/blongfree/p/5048008.html
Copyright © 2020-2023  润新知