• 谈使用Eclipse与DDMS调试Android程序的方法


          在Eclipse开发工具中调试程序的方法很多,但是使用Eclipse调试Android程序时需要注意一些细节上的问题。许多刚接触 Android的开发者,在调试Android程序时总是不能迅速地找到程序的错误所在,Eclipse+ADT的开发环境中没有直接跟踪对象内容的方法,但是我们可以使用Google提供的ADT插件DDMS(Dalvik Debug Monitor Service)在Eclipse上轻松地调试Android程序。

            DDMS为我们提供了很多功能,例如:测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息,Logcat,广播状态信息,模拟电话呼叫,接收SMS,虚拟地理坐标等等,下面我们通过DDMS来调试我们的Hello Android项目。

           (1)将Eclipse开发工具的工作界面切换到DDMS标签。首先确定Eclipse开发工具右上角是否有“DDMS”标签,如果有,则直接点击该标签即可切换到DDMS工作界面,如下图所示。

    谈使用Eclipse与DDMS调试Android程序的方法

           如果没有,则点击'Open Perspective'按钮,选择'Other...'命令按钮,打开'Open Perspective'对话框,如下图所示。

    谈使用Eclipse与DDMS调试Android程序的方法

           在'Open Perspective'对话框中选择'DDMS'选项,然后点击'确定'按钮,如下图所示。  

    谈使用Eclipse与DDMS调试Android程序的方法

           (2) 在 'DDMS'界面中选择'Devices'标签,查看其菜单的功能,我们可以看到Debug Process(调试进程)、Update Threads(更新线程)、Update Heap(更新堆)、Cause GC(引起垃圾回收)、Stop Process(停止进程)、Screen Capture(屏幕截图)、Reset adb(重启Android Debug Bridge)菜单选项,如下图所示。

    谈使用Eclipse与DDMS调试Android程序的方法

           (3) 从上图中可以观察到Android程序运行时的各种状态,比如进程信息、线程分析、堆内存的占用,结束一个进等程。当然,这些操作都是在DDMS框架下进行的,日常开发的程序是无法执行调用的。如果adb调试桥运行不稳定,可以选择'reset adb'来重新启动'adb.exe'进程。下面我们介绍如何使用DDMS的'Logcat'来调试Android程序。

           'Logcat' 通过'android.util.Log'类的静态方法来查找错误和打印系统日志消息。它是一个进行日志输出的API,我们在Android 程序中可以随时为某一个对象插入一个Log,然后在DDMS中观察Logcat的输出是否正常。android.util.Log常用的方法有以下5个:

           Log.v(String tag, String msg);

           Log.d(String tag, String msg);

           Log.i(String tag, String msg);

           Log.w(String tag, String msg);

           Log.e(String tag, String msg);

           这5种方法的首字母分别对应VERBOSE、DEBUG、INFO、WARN、ERROR。当利用DDMS进行调试时,它们的区别并不大,只是显示的颜色不同,我们可以控制要显示的某一类错误,一般我们如果使用'断点'方式来调试程序,则使用Log.e比较合适。但是根据规范建议Log.v,Log.d信息应当只存在于开发过程中,最终版本只可以包含Log.i, Log.w,Log.e这三种日志信息。下面我们对'HelloAndroid'程序进行调试,首先修改'HelloAndroid.java'如下面代码所示。我们在代码中加入了需要输出的日志信息。

            代码:HelloAndroid.java

    Java代码
    1. package com.yarin.Android.HelloAndroid;      
    2.      
    3. import android.app.Activity;      
    4. import android.os.Bundle;      
    5.      
    6. import android.util.Log;      
    7.      
    8. public class HelloAndroid extends Activity      
    9. {      
    10.           
    11.     private static final String TAG = 'HelloAndroid';      
    12.           
    13.     public void onCreate(Bundle savedInstanceState)      
    14.     {      
    15.         super.onCreate(savedInstanceState);      
    16.               
    17.         Log.v(TAG,'VERBOSE');      
    18.         Log.d(TAG,'DEBUG');      
    19.         Log.i(TAG,'INFO');      
    20.         Log.w(TAG,'WARN');      
    21.         Log.e(TAG,'ERROR');      
    22.         setContentView(R.layout.main);      
    23.     }      
    24. }    

           同样我们以前常用的System.out.println();的结果也会输出在这里而不是显示在传统的控制台中。另外在DDMS视图中devices中可以通过“Screen Capture”图标(一个相机图标)可以截出当前android虚拟机的屏幕。

  • 相关阅读:
    简单理解Socket
    TCP/IP、Http、Socket的区别
    iOS,一行代码进行RSA、DES 、AES、MD5加密、解密
    iOS开发
    我的问题
    Windows 摄像头数据
    学习记录
    编码转换
    QString 编码转换
    参考网页
  • 原文地址:https://www.cnblogs.com/xiaochao1234/p/3831121.html
Copyright © 2020-2023  润新知