转自: http://www.uml.org.cn/mobiledev/201110092.asp

Android 软件开发之如何使用Eclipse Debug调试程序详解(七)
 

发布于2011-10-09

 

1.在程序中添加一个断点

如果所示:在Eclipse中添加了一个程序断点

在Eclipse中一共有三种添加断点的方法

第一种: 在红框区域右键出现菜单后点击第一项 Toggle Breakpoint 将会在你右键代码的哪一行添加一个程序断点 (同样的操作方可取消程序断点)

第二种: 在红框区域双击鼠标左键将会在你双击代码的哪一行添加一个程序断点 (同样的操作方可取消程序断点)

第三种 :在光标停留的地方使用快捷键 Ctrl + Shift + B 将会在光标停留的这一行添加一个程序断点 (同样的操作方可取消程序断点)

2.运行Debug 调试 让程序停留在添加的断点上

如下图所示,在红框内点击下拉菜单选中需要调试的项目 则开始运行Debug调试

如果不在下拉表中选直接点击表示Debug运行默认项目(默认项目为上一次运行的项目)

Debug调试 快捷键为单击F11

分析一下如何科学的添加程序断点, 上图中我为了加断点查看生成出来随机数的值我一共添加了6个程序断点,绿框表示最为科学的断点位置 ,红框表示不科学的位置。 我们分析一下为什么, 如果switch case 中的代码片段过长 或者 case 的数量过多 如果采用红框的方式来添加程序断点,程序员须要添加很多程序断点万一有疏漏 所以会很难快速定位代码执行到了那里 ,如果使用绿框的方式添加程序断点,程序员只须要在断点出按 F6 单步跳过这一行代码就会走进正确的case中方便继续调试。

Debug调试运行后,程序停在了红框处,按F6单步跳过 发现随机数为4 程序停留在了绿框中,程序员可以迅速定位random的值为4

3.程序停留后查看变量的数值

蓝框中的内容表示为断点的入口方法, 就好比你的断点是从那个方法进来的,学会看这个真的非常重要, 好比我现在明确知道我的一个方法在被调用的时候方法中会出现错误,但是这个方法在程序中100个地方都在调用,我可能断定实在那里调用的时候出的错误,我不可能在100个调用它的地方都加一个断点,我可以在方法中添加程序断点 然后在篮框中查看程序是从那个地方走进这个方法的,便可以快速定位问题所在。

绿框中可以查看当前方法中所有变量的值,但是如果变量非常多在这里看就比较麻烦,可以使用红框的方法查看。

红框中可以右键变量名点击咖啡框中的watch 后 在紫框中Expressions 就可以看到变量的数值了。

BreakPoints 中会记录程序中添加过多少程序断点。

4分享一些Eclipse中Debug的一些小技巧

watch 过的变量 和我们自己加的程序断点不会被Eclipse 自动删除 除非我们手动删除否则会一直留在紫框中,这些数值会拖慢Eclipse 开发工具,如果过多的话很可能会造成 Eclipse 崩溃(有可能是Eclipse的BUG),让开发变得非常痛苦,所以雨松MOMO在这里建议大家在每次Debug调试的时候将紫框中之前 加的程序断点 和 watch过的变量 全不手动清空,只添加这一次调试须要的断点就可以了,这样的话 Eclipse 就不会被这些拖慢进程的东西所导致崩溃。

5.连接真机调试

第一步 打开自己的手机在设置中选择应用程序 然后选择开发 然后选中USB调试。

第二步 用USB线连接手机到电脑,一般情况会自动安装驱动,如果无法安装驱动的话 就去下载一个豌豆荚 或者91助手,让它帮我们手机自动安装驱动 很方便的。

第三步 驱动安装成功后会在Device中看到真机(红框中) 绿框中为android电脑模拟器

运行项目后弹出设备选择窗口 第一个为模拟器 第二个红框内的为我连接电脑的真机 MOTO的里程碑,选择完后点击OK 就可以通过真机来调试程序了,简单吧?是不是很给力呢呵呵。

6.Android 开发中Log信息的打印

本人做过J2ME 开发 Android开发 iPhone开发 发现J2ME 的模拟器 还有Iphone的模拟器都非常给力速度很很快(模拟器比真机快) 唯独android的模拟器 是最不给力的 (真机比模拟器快) 实在是慢的不行 连接上真机可以快一点 但是一样还是慢 尤其是Debug的时候 简直是太不给力了(发点牢骚大家别介意哦 > - <)所以有时候我在开发Android的时候不到万不得已我不去Debug 我会使用Log去打印我须要的数据 下面我教大家如何在Andoid下打印Log信息。希望大家都学会使用log.

public class testActivity extends Activity {

/**

* 返回一个随机数

* @param botton

* @param top

* @return

*/

private int UtilRandom(int botton, int top) {

return ((Math.abs(new Random().nextInt()) % (top - botton)) + botton);

}

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

int a = UtilRandom(0,5);

int b = UtilRandom(0,5);

int c = UtilRandom(0,5);

int d = UtilRandom(0,5);

int e = UtilRandom(0,5);

Log.v("random", a +"");

Log.v("random", b +"");

Log.v("random", c +"");

Log.v("random", d +"");

Log.v("random", e +"");

setContentView(R.layout.main);

}

}

常用的Log有5个:Log.v()Log.d()Log.i() Log.w() Log.e() 。

根据首字母对应VERBOSE,DEBUG,INFO, WARN,ERROR。

以上这些Log系统都会打印出来。

打开LogCat页面发现系统打印了很多Log信息 我们不好定位出刚才自己打的Log,如图所示点击红框内的“+”符号弹出下方窗口后在Filter Name : 和 by Log Tag: (蓝框内)填写我们刚才打的LOG tag "random"注意这两项都必需填写 然后单击OK后 方可在绿框中看到我们刚才打的random的Log 。怎么样还是很简单的吧 呵呵。

最后附上Eclipse 在开发中使用到的快捷键很实用噢

转: Android 软件开发之如何使用Eclipse Debug调试程序详解(七)的更多相关文章

  1. Android 软件开发之如何使用Eclipse Debug调试程序详解及Eclipse常用快捷键(转)

    1.在程序中添加一个断点如果所示:在Eclipse中添加了一个程序断点 在Eclipse中一共有三种添加断点的方法 第一种: 在红框区域右键出现菜单后点击第一项 Toggle Breakpoint 将 ...

  2. Android 开发之使用Eclipse Debug调试详解(转)

    转自 http://blog.csdn.net/xys289187120/article/details/6636331 1.在程序中添加一个断点 如果所示:在Eclipse中添加了一个程序断点 在E ...

  3. Android 高级UI设计笔记07:RecyclerView 的详解

    1. 使用RecyclerView       在 Android 应用程序中列表是一个非常重要的控件,适用场合非常多,如新闻列表.应用列表.消息列表等等,但是从Android 一出生到现在并没有非常 ...

  4. Android中Intent传值与Bundle传值的区别详解

    Android中Intent传值与Bundle传值的区别详解 举个例子我现在要从A界面跳转到B界面或者C界面   这样的话 我就需要写2个Intent如果你还要涉及的传值的话 你的Intent就要写两 ...

  5. Android PopupWindow Dialog 关于 is your activity running 崩溃详解

    Android PopupWindow Dialog 关于 is your activity running 崩溃详解 [TOC] 起因 对于 PopupWindow Dialog 需要 Activi ...

  6. Android为TV端助力 转载:Android绘图Canvas十八般武器之Shader详解及实战篇(上)

    前言 Android中绘图离不开的就是Canvas了,Canvas是一个庞大的知识体系,有Java层的,也有jni层深入到Framework.Canvas有许多的知识内容,构建了一个武器库一般,所谓十 ...

  7. Android为TV端助力 转载:Android绘图Canvas十八般武器之Shader详解及实战篇(下)

    LinearGradient 线性渐变渲染器 LinearGradient中文翻译过来就是线性渐变的意思.线性渐变通俗来讲就是给起点设置一个颜色值如#faf84d,终点设置一个颜色值如#CC423C, ...

  8. 转:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法、shiro认证与shiro授权

    原文地址:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法.shiro认证与shiro授权 以下是部分内容,具体见原文. shiro介绍 什么是shiro shiro是Apache ...

  9. 移动端开发touchstart,touchmove,touchend事件详解和项目

    移动端开发touchstart,touchmove,touchend事件详解和项目 最近在做移动端的开发,在一个“服务商管理”页面使用到了触摸事件"touchstart",&quo ...

随机推荐

  1. env - 在重建的环境中运行程序

    SYNOPSIS(总览) env [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...] DESCRIPTION(描述) 设置环境中的每个NAME为VAL ...

  2. LayuiAdmin退出模块报错解决

    将layuiAdmin/src/controller目录下的common.js中 logout方法的url中logout.js的路径修改为自己目录的路径: 我这里修改为绝对路径:

  3. springmvc @RequestParam @RequestBody @PathVariable 等参数绑定注解详解

    简介: handler method 参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类:(主要讲解常用类型) A.处理requet uri 部分(这里指uri templat ...

  4. C语言int *a 和int* a的写法

  5. 解决sqlplus无法退格问题

      # wget http://download.openpkg.org/components/cache/rlwrap/rlwrap-0.42.tar.gz # tar -zxf rlwrap-0. ...

  6. python基础知识09-继承,多继承和魔术方法

    1.继承 class Father: def init(self,age,sex): self.age = age self.sex = sex class Son(Father): 类名后面写括号, ...

  7. Haybale Stacking(差分数组 + 求中位数的一些方法 + nth_element)

    题意: 给定N个初始值为0的数, 然后给定K个区间修改(区间[l,r] 每个元素加一), 求修改后序列的中位数. 分析: K个离线的区间修改可以使用差分数组(http://www.cnblogs.co ...

  8. C#中的ComboBox实现只能选择不能输入,且下拉框中有默认值。

    下拉框有DropDownStyle这一属性,把DropDownStyle类型选为DropDownList,则下拉框只能选择不能输入了.但是这时的下拉框是没有默认值的,即使在Text属性中输入默认值,也 ...

  9. kissy学习

    http://docs.kissyui.com/1.4/docs/html/guideline/kmd.html

  10. 一些简单的JavaScript的方法

    <script type="text/javascript"> //js跳转 function UserMouserDown() { confirm('你确定要删除吗? ...