在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工作界面,如下图所示。

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

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

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

(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. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.util.Log;
  5. public class HelloAndroid extends Activity
  6. {
  7. private static final String TAG = 'HelloAndroid';
  8. public void onCreate(Bundle savedInstanceState)
  9. {
  10. super.onCreate(savedInstanceState);
  11. Log.v(TAG,'VERBOSE');
  12. Log.d(TAG,'DEBUG');
  13. Log.i(TAG,'INFO');
  14. Log.w(TAG,'WARN');
  15. Log.e(TAG,'ERROR');
  16. setContentView(R.layout.main);
  17. }
  18. }

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

谈使用Eclipse与DDMS调试Android程序的方法的更多相关文章

  1. Eclipse开发工具的使用之-使用Eclipse的Debug调试Android程序

    1.设置断点,双击Eclipse编辑界面的边界,或者右击编辑界面的边界,快捷键Ctrl+Shift+B. 2.F11键开始调试程序,程序安装到手机之后,并不会自动运行,需要你手动运行到断点处. 3.运 ...

  2. eclipse 远程wifi调试android程序

    [原文]http://leanote.com/blog/view/541f8b2dbda4e44f75000000 下载wifidebug http://pan.baidu.com/s/1i3stnF ...

  3. Eclipse+CDT+GDB调试android NDK程序(转)

    Eclipse+CDT+gdb调试android ndk程序 先介绍一下开发环境,在这个环境下,up主保证是没有问题的. ubuntu 11.10 eclipse 3.7(indego) for ja ...

  4. 在ubuntu下真机调试android程序出现设备没有访问权限

    今天把android的开发环境从windows平台切换到了ubuntu上. java jdk android-adt android-ndk都下好,环境变量都配好之后, 在调试程序的时候,出现设备没有 ...

  5. 真机在wifi下调试android程序

    大家好,最近在学习android程序由于手机接口问题,调试程序的时候老是接触不良而不能正常调试,因此感到相当苦恼,于是在网上查找无线调试android的方法.经过研究和尝试现已成功无线调试程序,方法分 ...

  6. android 调试 native 程序的方法

    一.背景 首先说需求,这个需求非常常见,就是android上需要的一个功能,linux已经有开源代码而且非常稳定,希望能直接porting过去使用,这个程序是pure c 的代码,也就是说,跟andr ...

  7. eclipse下使用Genymotion调试Android程序出现的问题

    一. The connection to adb is down, and a severe error has occured. You must restart adb and Eclipse. ...

  8. 动态调试Android程序

    最近好几天来一直在看动态调试.首先是这一篇(http://www.52pojie.cn/forum.php?mod=viewthread&tid=293648)里面介绍了多种IDA动态调试的情 ...

  9. Eclipse + ndk+ cocos2dx 调试Cocos2dx 程序

    本文是我自己尝试通过eclipse来在windows平台下搭建cocos2dx的过程,期间遇到了一些问题,都是通过网上借鉴别人的博文来解决的,下面也列出来这些参考文献.写下来的目的主要是自己以后要用的 ...

随机推荐

  1. PHP "gdImageCreateFromXpm()"空指针间接引用漏洞

    漏洞版本: PHP PHP 5.5.10 PHP PHP 5.4.26 漏洞描述: CVE ID: CVE-2014-2497 PHP是一种HTML内嵌式的语言. PHP 5.4.26.5.5.10版 ...

  2. [POJ 2588] Snakes

    同swustoj 8 Snakes Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1015   Accepted: 341 ...

  3. 关于Azure存储账户中存储虚拟机VHD文件的注意事项

     Joy Qiao from MSFT  Thu, Mar 12 2015 3:16 PM 我们在使用Azure时经常都会在Azure存储账户中放一些文件,包括Azure虚机的VHD文件也都是放在存储 ...

  4. ps一般常用的快捷键

    jpg 不支持透明和半透明 :网页中的大图,高清图(体积大) gif 支持透明 不支持半透明 :网页中的小图标(动画图片)png8 支持透明 不支持半透明 :网页中的小图标png24 支持透明 支持半 ...

  5. Apache2.2+Tomcat7.0整合配置详解

    一.简单介绍 Apache.Tomcat Apache HTTP Server(简称 Apache),是 Apache 软件基金协会的一个开放源码的网页服务器,可以在 Windows.Unix.Lin ...

  6. erlang mnesia 数据库实现SQL查询

    Mnesia是一个分布式数据库管理系统,适合于电信和其它需要持续运行和具备软实时特性的Erlang应用,越来越受关注和使用,但是目前Mnesia资料却不多,很多都只有官方的用户指南.下面的内容将着重说 ...

  7. Erlang入门(三)——分布式编程

    明天要回家一个星期了,好好休息下.今天找到别人翻译的Erlang编程手册,值的好好读一遍.    所谓分布式的Erlang应用是运行在一系列Erlang节点组成的网络之上.这样的系统的性质与单一节点上 ...

  8. 先前设定的sa密码忘记了,如何修改sa密码?

    在window身份验证登陆后,新建查询,输入以下代码就可以修改sa密码了: use master go exec sp_password null,'123456','sa' go

  9. ubuntu桌面右上角键盘图标不见解决方法

    今天出现了这个问题,桌面右上角的键盘图标不见,找到解决方法如下: 打开终端,分别输入以下命令即可: killall ibus-daemon 这个表示结束进程 ibus-daemon -d 这个表示重启 ...

  10. This Android SDK requires Android Developer Toolkit version 23.0.0 or above

    2014-07-05 12:58 6445人阅读 评论(1) 收藏 举报 This Android SDK requires Android Developer Toolkit version 23. ...