在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. java中synchronized的用法详解

    记下来,很重要. Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并发线程访问同一个对象object中的这个synchron ...

  2. jsoi2014前两轮回眸

    今天从常州回来了,第二轮考得惨不忍睹 大概来总结一下前两轮: 第一轮是4个小时,3道题,一道网络流,一道环形DP,一道线段树 最后一道题ahoi的原题(传送bzoj1798),非常水的线段树,是个很好 ...

  3. HAOI2006受欢迎的牛

    求出强联通分量之后判断出度为0的点有几个,有1个就输出这个分量的点的数目,否则输出0: var i,j,n,m,x,y,ans1,ans2,t,cnt,top:longint; head,next,g ...

  4. spring-webmvc 4.3.4 与 freemarker、easyui 整合

    一.所需lib包 二.web.xml配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xm ...

  5. 【Java】Java运行cmd命令直接导出.sql文件

    Java中的Runtime.getRuntime().exec(commandStr)可以调用执行cmd命令 package Util; import java.io.File; import jav ...

  6. 也用 Log4Net 之将日志记录到数据库的配置 (一)

    也用 Log4Net  之将日志记录到数据库的配置 (一) 前段时间我一直想做一个通用一点的日志记录系统,可以便于不同的业务组调用进行日志记录及分析.本来打算着自己下手写一个,后面发现各业务组可能会需 ...

  7. 理解Android的手势识别

    对于触摸屏,其原生的消息无非按下.抬起.移动这几种,我们只需要简单重载onTouch或者设置触摸侦听器setOnTouchListener即可进行处理.不过,为了提高我们的APP的用户体验,有时候我们 ...

  8. SSL 通信原理及Tomcat SSL 配置

    SSL 通信原理及Tomcat SSL 双向配置 目录1 参考资料 .................................................................. ...

  9. MSP430F5438内部延时函数的用法

    今天看示例程序中出现了__delay_cycles()这个函数,在查找msp430x54x.h这个头文件的时候,发现这个头文件中没有该函数的声明,原来这个函数已经在IAR这个编译器中集成,这里总结一下 ...

  10. H5制作1--母亲节快乐

    H5作品现在很流行额. 早上起的很早.就自己试着去了解了一下.感觉很easy. 用了百度的H5在线制作工具.感觉很easy.顺便给百度做下推广吧.h5.baidu.com 于是就有了自己的第一个dem ...