Eclipse 用DDMS 调试Android 程序

Eclipse 用DDMS 调试Android 程序

  (2011-06-16 14:41:58)
标签: 

eclipse

 

ddms

 

调试

 

android

 

程序

 

devices

 

screen

 

capture

 

日志

输出

 

it

分类: JAVA相关

在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工作界面,如图2-40所示。如果没有,则点击'Open Perspective'按钮,选择'Other...'命令按钮,打开'Open Perspective'对话框,如图2-41所示。在'Open Perspective'对话框中选择'DDMS'选项,然后点击'确定'按钮,如图2-42所示。

 
图2-40 DDMS工作界面切换
 
图2-41  打开视图布局显示操作
 
(点击查看大图)图2-42  视图布局选择框
(1)  在 'DDMS'界面中选择'Devices'标签,查看其菜单的功能,我们可以看到Debug Process(调试进程)、Update Threads(更新线程)、Update Heap(更新堆)、Cause GC(引起垃圾回收)、Stop Process(停止进程)、Screen Capture(屏幕截图)、Reset adb(重启Android Debug Bridge)菜单选项,如图2-43所示。
 
图2-43 DDMS操作菜单

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

1.'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'如代码清 代2-1所示。我们在代码中加入了需要输出的日志信息。

代码清单2-1:HelloAndroid.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虚拟机的屏幕。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值