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

如果没有,则点击'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
- package com.yarin.Android.HelloAndroid;
- import android.app.Activity;
- import android.os.Bundle;
- import android.util.Log;
- public class HelloAndroid extends Activity
- {
- private static final String TAG = 'HelloAndroid';
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- Log.v(TAG,'VERBOSE');
- Log.d(TAG,'DEBUG');
- Log.i(TAG,'INFO');
- Log.w(TAG,'WARN');
- Log.e(TAG,'ERROR');
- setContentView(R.layout.main);
- }
- }
同样我们以前常用的System.out.println();的结果也会输出在这里而不是显示在传统的控制台中。另外在DDMS视图中devices中可以通过“Screen Capture”图标(一个相机图标)可以截出当前android虚拟机的屏幕。
谈使用Eclipse与DDMS调试Android程序的方法的更多相关文章
- Eclipse开发工具的使用之-使用Eclipse的Debug调试Android程序
1.设置断点,双击Eclipse编辑界面的边界,或者右击编辑界面的边界,快捷键Ctrl+Shift+B. 2.F11键开始调试程序,程序安装到手机之后,并不会自动运行,需要你手动运行到断点处. 3.运 ...
- eclipse 远程wifi调试android程序
[原文]http://leanote.com/blog/view/541f8b2dbda4e44f75000000 下载wifidebug http://pan.baidu.com/s/1i3stnF ...
- Eclipse+CDT+GDB调试android NDK程序(转)
Eclipse+CDT+gdb调试android ndk程序 先介绍一下开发环境,在这个环境下,up主保证是没有问题的. ubuntu 11.10 eclipse 3.7(indego) for ja ...
- 在ubuntu下真机调试android程序出现设备没有访问权限
今天把android的开发环境从windows平台切换到了ubuntu上. java jdk android-adt android-ndk都下好,环境变量都配好之后, 在调试程序的时候,出现设备没有 ...
- 真机在wifi下调试android程序
大家好,最近在学习android程序由于手机接口问题,调试程序的时候老是接触不良而不能正常调试,因此感到相当苦恼,于是在网上查找无线调试android的方法.经过研究和尝试现已成功无线调试程序,方法分 ...
- android 调试 native 程序的方法
一.背景 首先说需求,这个需求非常常见,就是android上需要的一个功能,linux已经有开源代码而且非常稳定,希望能直接porting过去使用,这个程序是pure c 的代码,也就是说,跟andr ...
- eclipse下使用Genymotion调试Android程序出现的问题
一. The connection to adb is down, and a severe error has occured. You must restart adb and Eclipse. ...
- 动态调试Android程序
最近好几天来一直在看动态调试.首先是这一篇(http://www.52pojie.cn/forum.php?mod=viewthread&tid=293648)里面介绍了多种IDA动态调试的情 ...
- Eclipse + ndk+ cocos2dx 调试Cocos2dx 程序
本文是我自己尝试通过eclipse来在windows平台下搭建cocos2dx的过程,期间遇到了一些问题,都是通过网上借鉴别人的博文来解决的,下面也列出来这些参考文献.写下来的目的主要是自己以后要用的 ...
随机推荐
- Hashtable与HashMap区别(2)
提到hashtable,先要澄清两个问题hashCode与equals().Hashtable有容量和加载因子,容量相当于桶,因子相当于桶里的对象.而hashCode我们可以把它理解为桶的序号,所以H ...
- bzoj2324
出题人真 口袋迷 很容易发现这是一道费用流的题目 很显然这个问题有两个难点: 保证走到某个点时之前序号的点都被走过 保证每个点都走 对于1,我们换个说法,一个人走到该点时经过的点的序号都小于该点--- ...
- bzoj3940: [Usaco2015 Feb]Censoring
AC自动机.为什么洛谷水题赛会出现这种题然而并不会那么题意就不说啦 .终于会写AC自动机判断是否是子串啦...用到kmp的就可以用AC自动机水过去啦 #include<cstdio> #i ...
- 【转】Android - Button(按钮)的响应点击事件的4种写法
原文网址:http://www.yrom.net/blog/2011/12/12/android-4-onclicklistener-of-button/ Button控件setOnclickList ...
- STL序列式容器
1.vector 空间运用的灵活性. 实现技术——关键是对大小的控制以及重新配置时的数据移动效率. 配置新空间.数据移动.释还旧空间 erase(int pos ...
- 【Python】Python-skier游戏[摘自.与孩子一起学编程]
这是一个滑雪者的游戏. skier从上向下滑,途中会遇到树和旗子,捡起一个旗子得10分,碰到一颗树扣100分,可以用左右箭头控制skier方向. 准备素材 一 准备python环境:我下载的pytho ...
- JDBCTemplate.java
package com.pk.xjgs.util; import java.sql.Connection; import java.sql.SQLException; import java.util ...
- POJ 2429
思路:a/n*b/n=lcm/gcd 所以这道题就是分解ans.dfs枚举每种素数情况.套Miller_Rabin和pollard_rho模板 //#pragma comment(linker, &q ...
- 取得Resultset的记录条数
public Boolean exists(String sql) { try { stm = conn.createStatement( java.sql.ResultSet.TYPE_SCROLL ...
- Eclipse热部署JSP
项目中JSP修改,每次都要重新部署启动才生效,我真切记得以前都不是这样子的 本来应该只需要刷新页面就可以查看到最新的修改的了 和以前工作空间项目配置对比 唯一不同的是,我现在这个工作空间 ...