一:断点调试java
用eclipse开发android程序的时,跟VS同样是能够断点单步调试的.
步骤以下.
1 设置断点:在编码窗体的左边框上用鼠标双击,或者右键点击菜单,选择 Toggle Breakpoint菜单项便可.android
2 在debug模式下运行程序进入调试状态:经过点击工具栏上的小虫按钮或者是在项目右键点击而后选择Debug As,Android Application菜单,启动程序的调试模式.
第一次运行调试模式eclipse会弹出以下确认窗口
程序员
当程序运行到你的断点地方时就会停下,这时能够按照下面的功能键按需求进行调试:
[1]快捷键(F8)直接执行程序,直到下一个断点处中止。
[2]快捷键(F5)单步执行程序,遇到方法时进入。
[3]快捷键(F6)单步执行程序,遇到方法时跳过。
[4]快捷键(F7)单步执行程序,从当前方法跳出。
查看断点时变量当前的值:右键点击对应的变量,在菜单上选择 watch 菜单项,变量的值就会出如今 expressions窗口中.express
2、Android应用调试之工具app
Eclipse Java编辑器dom
这个编辑器不但可以为开发者提供代码编写、语法纠错和实时编译等经常使用功能,并且还可以对Java源代码进行快速修改、重构等高级操做。eclipse
详讲:错误提示符(一个小电灯泡图标和一个红色的X)指出了错误所在的位置,在屏幕的右上角有一个红色的标记,它的做用是提示开发者该文档的某个位置存在错误。在文档的右边空白处还能看到一个红色的矩形框,它指明了错误所在的大体位置,若是代码量很是大,能够将竖直滚动条拖到这个红色矩形块的位置,快速定位错误。iphone
Java和Dalvik编译、构建系统编辑器
Android应用程序最终是运行在手机(或者模拟器)的Dalvik虚拟机上的。所以对Android应用程序的编译和构建须要用到Java编译器和Dalvik字节码转换器。函数
Eclipse调试器
Android SDK提供了从Dalvik字节码到Java源代码的映射,这样开发者就能够直接使用Eclipse功能强大的调试器进行Android应用程序的调试。
详讲:Android SDK对于Eclipse调试器来讲是彻底透明的,能够在Eclipse中像调试普通Java应用程序那样调试Android应用程序。在代码中设置断点是经常使用的一种调试手段,在Eclipse中能够经过以下3种方法设置断点。
执行菜单命令Run->Debug->Android Application,开始对程序进行调试。初始化过程与正常运行程序同样,若是须要会对项目进行从新构建,而后启动模拟器,加载程序。程序正常启动之后在模拟器上就会出现DebugTest的用户界面。程序将会在断点位置中止执行,Eclipse会自动切换到Debug布局。在Debug布局中包含了以下一些视图:
Debug标签页用来显示程序执行过程当中的调用栈。在Debug标签页的工具栏上有一些功能按钮,提供了继续、暂停、终止、单步执行、逐过程执行和返回等功能。
Variables标签页中能够显示出当前代码做用域内的全部变量值。Breakpoints标签页中列出了程序中全部的断点。
Debug布局中的编辑器与Java布局中的编辑器同样,只不过在Debug布局中当前执行的代码会高亮显示。
Outline视图能够显示出当前项目的结构图。
这三个视图位于Debug布局的左下角,其中Console(命令行)视图是最有用的一个,在程序调试过程当中许多重要的信息都显示在Console视图中。
Logcat
Logcat是Android SDK中的一个通用日志工具。在程序的运行过程当中能够经过Logcat打印状态信息和错误信息等。Logcat另一个重要的用途是在程序启动和初始化的过程当中向开发者报告进展情况。
当应用程序在模拟器中加载并启动时,Eclipse会自动切换到Debug布局,关于程序运行状态的各类信息就会出如今右下方的Logcat视图中。为了更加方便的浏览Logcat视图中的内容,能够用鼠标单击Logcat视图右上角的最大化按钮。Logcat视图中出现的信息,按照消息产生的顺序,最开始是关于模拟器启动的消息,接着是Android操做系统启动的消息,而后是各类应用程序启动消息,最后才是与加载程序启动相关的消息。在Logcat视图的工具栏中能够看到标记为V、D、I、W和E的几个按钮,他们的做用是对消息进行过滤。
Logcat视图中包含了以下列:
注意:在程序开发过程当中,若是须要多人协做进行错误的调试,那么就要对Logcat日志进行共享。导出Logcat日志的方法很是简单,首先在Logcat视图中选中想要导出的日志内容,而后鼠标单击Logcat视图右上角的向下箭头,这时就会弹出一个菜单,在菜单的最下方有一个名为Exports Selection as Text的菜单项,执行这个菜单项,就能够将选中的日志保存成一个文本文件。
Android Debug Bridge(adb)
adb是Android SDK中包含的一个能够直接对Android手机或者模拟器进行操做和调试的命令行工具。
DDMS(Dalvik虚拟机调试监控服务,Dalvik Debug Monitor Service)
DDMS是Android SDK中包含的一个窗口化的程序调试环境,它与Eclipse和Dalvik虚拟机紧密结合在一块儿。
详讲:见日志——常见的adb命令。
Traceview
Android平台特有的调试工具,它能够跟踪并报告程序运行过程当中的全部方法调用和每一个方法的耗时。
3、Android调试总结
一. Log 日志输出
可在 Window->Show View->Other->Android->Log Cat 调出 Log Cat 界面
经常使用的日志: 普通运行信息:i 错误信息:e
输出日志: Log.i(TAG, strings); 其中TAG 为日志标识符,通常用类名表示(方便查看此日志是某个类的输出),且常声明为静态常量.stirngs 为要输出的字符串.例:
成功运行程序后,在输出日志Log Cat 视图中 便可查看到标识为 PhoneSMSTest 的信息.
PS:可在Log cat 中建立一个过虑器,Log cat->create filter->Filter Name:随意.by tab name: 日志标识符,此处为 PhoneSMSTest
二.Debug 调试
双击代码编辑器左侧设置断点 点击菜单栏 Run(或F11) 即可开始程序调试.程序运行到断点处时会弹出一对话框,点击 yes 跳入Debug 视图, 找到正在调试的类
Run->step Into 逐语句 (或F5)
Run->step Over 逐过程 (或F6,略过方法)
Run->step Return 单步返回(或F7 , 逐语句进入方法后跳出.);
Run->Run To Line 运行到光标处 (或 Ctrl + R)
Run->Resume 断续运行到结束 (或F8)
三. 单元测试
1.配置AndroidMainfest.xml
在application 中加入
<uses-library android:name="android.test.runner" /> <!-- 不要写入 activity 中 -->
在application 外加入
<!-- targetPackage 要与 mainfest 中的 package 的值相同. -->
<instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.PhoneSMS.melody" android:label="Test for my app" />
2.编写单元测试代码
注意:在targetPackage 包中创建单元测试类 如:在 com.PhoneSMS.melody 中创建 PhoneSMSTest.java. 此类必须继承 AndroidTestCase 且其中的测试方法必须以 test 开头, 如: testPhoneSMS();
代码以下:
在大纲视图(Outline)中找到测试方法->右健->Run As ->Android JUnit Test 便可.ps: 调出Outline :window->Show View ->Outline
4、Android 开发之Eclipse Debug调试详解
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.
经常使用的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 在开发中使用到的快捷键很实用噢(转载)
Ctrl+1 快速修复(最经典的快捷键,就不用多说了)
Ctrl+D: 删除当前行
Ctrl+Alt+↓ 复制当前行到下一行(复制增长)
Ctrl+Alt+↑ 复制当前行到上一行(复制增长)
Alt+↓ 当前行和下面一行交互位置(特别实用,能够省去先剪切,再粘贴了)
Alt+↑ 当前行和上面一行交互位置(同上)
Alt+← 前一个编辑的页面
Alt+→ 下一个编辑的页面(固然是针对上面那条来讲了)
Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性
Shift+Enter 在当前行的下一行插入空行(这时鼠标能够在当前行的任一位置,不必定是最后)
Shift+Ctrl+Enter 在当前行插入空行(原理同上条)
Ctrl+Q 定位到最后编辑的地方
Ctrl+L 定位在某行 (对于程序超过100的人就有福音了)
Ctrl+M 最大化当前的Edit或View (再按则反之)
Ctrl+/ 注释当前行,再按则取消注释
Ctrl+O 快速显示 OutLine
Ctrl+T 快速显示当前类的继承结构
Ctrl+W 关闭当前Editer
Ctrl+K 参照选中的Word快速定位到下一个
Ctrl+E 快速显示当前Editer的下拉列表(若是当前页面没有显示的用黑体表示)
Ctrl+/(小键盘) 折叠当前类中的全部代码
Ctrl+×(小键盘) 展开当前类中的全部代码
Ctrl+Space 代码助手完成一些代码的插入(但通常和输入法有冲突,能够修改输入法的热键,也能够暂用Alt+/来代替)
Ctrl+Shift+E 显示管理当前打开的全部的View的管理器(能够选择关闭,激活等操做)
Ctrl+J 正向增量查找(按下Ctrl+J后,你所输入的每一个字母编辑器都提供快速匹配定位到某个单词,若是没有,则在stutes line中显示没有找到了,查一个单词时,特别实用,这个功能Idea两年前就有了)
Ctrl+Shift+J 反向增量查找(和上条相同,只不过是从后往前查)
Ctrl+Shift+F4 关闭全部打开的Editer
Ctrl+Shift+X 把当前选中的文本所有变味小写
Ctrl+Shift+Y 把当前选中的文本所有变为小写
Ctrl+Shift+F 格式化当前代码
Ctrl+Shift+P 定位到对于的匹配符(譬如{}) (从前面定位后面时,光标要在匹配符里面,后面到前面,则反之)
下面的快捷键是重构里面经常使用的,本人就本身喜欢且经常使用的整理一下(注:通常重构的快捷键都是Alt+Shift开头的了)
Alt+Shift+R 重命名 (是我本身最爱用的一个了,尤为是变量和类的Rename,比手工方法能节省不少劳动力)
Alt+Shift+M 抽取方法 (这是重构里面最经常使用的方法之一了,尤为是对一大堆泥团代码有用)
Alt+Shift+C 修改函数结构(比较实用,有N个函数调用了这个方法,修改一次搞定)
Alt+Shift+L 抽取本地变量( 能够直接把一些魔法数字和字符串抽取成一个变量,尤为是多处调用的时候)
Alt+Shift+F 把Class中的local变量变为field变量 (比较实用的功能)
Alt+Shift+I 合并变量(可能这样说有点不妥Inline)
Alt+Shift+V 移动函数和变量(不怎么经常使用)
Alt+Shift+Z 重构的后悔药(Undo)
编辑
做用域 功能 快捷键
全局 查找并替换 Ctrl+F
文本编辑器 查找上一个 Ctrl+Shift+K
文本编辑器 查找下一个 Ctrl+K
全局 撤销 Ctrl+Z
全局 复制 Ctrl+C
全局 恢复上一个选择 Alt+Shift+↓
全局 剪切 Ctrl+X
全局 快速修正 Ctrl1+1
全局 内容辅助 Alt+/
全局 所有选中 Ctrl+A
全局 删除 Delete
全局 上下文信息 Alt+?
Alt+Shift+?
Ctrl+Shift+Space
Java编辑器 显示工具提示描述 F2
Java编辑器 选择封装元素 Alt+Shift+↑
Java编辑器 选择上一个元素 Alt+Shift+←
Java编辑器 选择下一个元素 Alt+Shift+→
文本编辑器 增量查找 Ctrl+J
文本编辑器 增量逆向查找 Ctrl+Shift+J
全局 粘贴 Ctrl+V
全局 重作 Ctrl+Y
查看
做用域 功能 快捷键
全局 放大 Ctrl+=
全局 缩小 Ctrl+-
窗口
做用域 功能 快捷键
全局 激活编辑器 F12
全局 切换编辑器 Ctrl+Shift+W
全局 上一个编辑器 Ctrl+Shift+F6
全局 上一个视图 Ctrl+Shift+F7
全局 上一个透视图 Ctrl+Shift+F8
全局 下一个编辑器 Ctrl+F6
全局 下一个视图 Ctrl+F7
全局 下一个透视图 Ctrl+F8
文本编辑器 显示标尺上下文菜单 Ctrl+W
全局 显示视图菜单 Ctrl+F10
全局 显示系统菜单 Alt+-
导航
做用域 功能 快捷键
Java编辑器 打开结构 Ctrl+F3
全局 打开类型 Ctrl+Shift+T
全局 打开类型层次结构 F4
全局 打开声明 F3
全局 打开外部javadoc Shift+F2
全局 打开资源 Ctrl+Shift+R
全局 后退历史记录 Alt+←
全局 前进历史记录 Alt+→
全局 上一个 Ctrl+,
全局 下一个 Ctrl+.
Java编辑器 显示大纲 Ctrl+O
全局 在层次结构中打开类型 Ctrl+Shift+H
全局 转至匹配的括号 Ctrl+Shift+P
全局 转至上一个编辑位置 Ctrl+Q
Java编辑器 转至上一个成员 Ctrl+Shift+↑
Java编辑器 转至下一个成员 Ctrl+Shift+↓
文本编辑器 转至行 Ctrl+L
搜索
做用域 功能 快捷键
全局 出如今文件中 Ctrl+Shift+U
全局 打开搜索对话框 Ctrl+H
全局 工做区中的声明 Ctrl+G
全局 工做区中的引用 Ctrl+Shift+G
文本编辑
做用域 功能 快捷键
文本编辑器 改写切换 Insert
文本编辑器 上滚行 Ctrl+↑
文本编辑器 下滚行 Ctrl+↓
文件
做用域 功能 快捷键
全局 保存 Ctrl+X
Ctrl+S
全局 打印 Ctrl+P
全局 关闭 Ctrl+F4
全局 所有保存 Ctrl+Shift+S
全局 所有关闭 Ctrl+Shift+F4
全局 属性 Alt+Enter
全局 新建 Ctrl+N
项目
做用域 功能 快捷键
全局 所有构建 Ctrl+B
源代码
做用域 功能 快捷键
Java编辑器 格式化 Ctrl+Shift+F
Java编辑器 取消注释 Ctrl+\
Java编辑器 注释 Ctrl+/
Java编辑器 添加导入 Ctrl+Shift+M
Java编辑器 组织导入 Ctrl+Shift+O
Java编辑器 使用try/catch块来包围 未设置,太经常使用了,因此在这里列出,建议本身设置。
也可使用Ctrl+1自动修正。
运行
做用域 功能 快捷键
全局 单步返回 F7
全局 单步跳过 F6
全局 单步跳入 F5
全局 单步跳入选择 Ctrl+F5
全局 调试上次启动 F11
全局 继续 F8
全局 使用过滤器单步执行 Shift+F5
全局 添加/去除断点 Ctrl+Shift+B
全局 显示 Ctrl+D
全局 运行上次启动 Ctrl+F11
全局 运行至行 Ctrl+R
全局 执行 Ctrl+U
重构
做用域 功能 快捷键
全局 撤销重构 Alt+Shift+Z
全局 抽取方法 Alt+Shift+M
全局 抽取局部变量 Alt+Shift+L
全局 内联 Alt+Shift+I
全局 移动 Alt+Shift+V
全局 重命名 Alt+Shift+R
全局 重作 Alt+Shift+Y