Eclipse的调试功能的10个小窍门[转]
原文链接:http://www.importnew.com/6164.html
你可能已经看过一些类似“关于调试的N件事”的文章了。但我想我每天大概在调试上会花掉1个小时,这是非常多的时间了。所以非常值得我们来了解一些用得到的功能,可以帮我们节约很多时间。所以在这个主题上值得我再来写一篇文章。
第一条: 不要过分的调试!
有关调试的第一条要牢记的便是这条很疯狂的口号!但是我必须要在这里再说一遍:不要过分的调试!试着将复杂的逻辑分解成独立的小单元,然后写单元测试代码来保证小单元的正确运行。我经常看到某些人会这么做:在一个大型的Web应用上点击,填了几个表单,跳转了多个页面,只是为了确认最后一个页面的结果的正确性,最后在调试视图下来开发代码。
在你开启tomcat之前,应该要先问问自己:有没有什么方法可以用单元测试来检测代码的行为呢?你可以找到很多教你如何写出好的代码的教程。而这里我主要来谈一谈Eclipse的调试功能,你可能不知道,或者长时间以来有些淡忘的功能。
调试视图:有条件的断点
如果你仅仅对程序的某个部分感兴趣,调试视图是非常有帮助的。假设你想看看一个循环中的第十三次循环得到什么结果,或者你正在调试一个抽象父类,想看看某个具体的子类。你可以在调试视图设置条件,右键点击代码旁的蓝色断点符号,在弹出菜单中选择“Breakpoint Properties…”。你可以选择是在你的代码段返回真值是停止程序或者当你的代码段的值改变时停止。
变量视图:显示逻辑结构(Show Lodical Structure)
如果你想在变量视图中查看Map或者List中的值,eclipse的默认设置可能不是那么方便。譬如你在使用HashMap,你必须要点开所有的子节点才能看到HashMap中的内容,还要受到HashMap实现细节的干扰。但是在变量上有一个小按钮-“Show Logical Structure”。它非常的方便,尤其当你没有实现某个对象的toString()代码时。我的老板前几个星期刚刚告诉我Eclipse有这个功能。你知道,他是那种每天只用对着PowerPoint和Excel的人。这对我这种号称程序员的家伙来说是件多么丢脸的事情啊!;-)
变量视图:更改值…(Change Value…)
假设你在一个基于Web的表单中稍微改了一点输入值,那么我们不需要重启调试session,你可以直接使用变量视图的改变变量值的功能。这可以节省你的时间,有时候也能帮你模拟一些奇怪的行为。
显示视图(Display View)
你知道还有个“显示视图”吗?你可以通过“Window” -> “Show View” -> “Display”激活这个视图。现在你的Eclipse有一个完全空的视图。你可以通过这个视图来输入以及验证新的代码段。这些代码将会在当前的调试的位置的上下文中执行,这意味着你可以使用所有的变量,你甚至还能使用内容辅助。要执行这个代码,你需要选中它,然后点击右键弹出菜单点击相应的项,或者按下CTRL+U(执行)或者按下CTRL+SHIFT+I(检查)。
导航: Drop to Frame
我相信所有人都知道”Step Into”,“Step over”,甚至知道“Step return”。这是调试要掌握的最基本的技巧。我还想告诉你另外两种方法。我非常喜欢它们。第一个是“Drop to Frame”。有了这个功能,你可以回到过去;-),你可以轻松回到你曾经运行过的Java stackframe中的位置。这对我来说非常有用,因为可能我错过了某一点,有了”Drop to Frame”功能,我可以轻松重新运行那段代码了。
导航: Step into Selection
第二个是“Step into Selection”。这个功能非常简单,但是很多人都没有使用。你仅仅需要按下Ctrl+Alt,同时点击你想去的方法上点击,快捷方便。相比较“Step Into”,“Step into Selection”更加方便。譬如假设你想进入某个有许多参数的方法,你可以使用一步就跳过所有参数的赋值。”Run to line”也是个不错的功能。你只需要将鼠标放在那一行前面,然后点击”CTRL+R”。
导航:使用快捷键
如果你不再使用鼠标,你会变得更加有效率。至少你应该掌握以下的快捷键:
F5 – “Step Into”
F6 – “Step Over”
F7 – “Step Return”
F8 – “Resume”
Ctrl+Shift+B – “Toggle Breakpoint”
Ctrl+Shift+I – “Inspect”
断点视图:Watchpoints
是什么改变了变量?!有时创建watchpoint会有很大的帮助。当某个要监视的field的值改变时或是读到时,调试器会停下来。双击某个field,这个watchpoint显示在断点视图中,你可以编辑它的属性。你也可以设置hit count,意思是当你输入的hit count已经达到了,调试器便会停下来。这个也适合于普通的断点。
清晰易读的对象
变量视图是使用toString()方法来显示一个对象的值,所以我们应该要写出清晰易读的toString()方法。java.lang.Object默认的toString()方法的javadoc也如此建议:
1
2
3
4
5
6
7
|
* Returns a string representation of the object. In general, the * toString method returns a string that * "textually represents" this object. The result should * be a concise but informative representation that is easy for a * person to read. * It is recommended that all subclasses override this method. [...] |
你可以看一看commons-lang中的ToStringBuilder。它可以帮助你写出“良好的、前后一致的”toString()方法。
如果你不能修改toString()方法,譬如你使用框架,或是外来的API,在Eclipse中创建“Detail Fomatter”可以帮到你。在变量视图中右击某个对象,然后点击“New Detail Formatter…”。然后你便能够定义代码,之后这种类型的Object都用这种形式来显示。
原文链接: Codecentric 翻译: ImportNew.com- 唐小娟
Eclipse的调试功能的10个小窍门[转]的更多相关文章
- Eclipse的调试功能的10个小窍门
你可能已经看过一些类似“关于调试的N件事”的文章了.但我想我每天大概在调试上会花掉1个小时,这是非常多的时间了.所以非常值得我们来了解一些用得到的功能,可以帮我们节约很多时间.所以在这个主题上值得我再 ...
- VS和Eclipse的调试功能哪个更强大?
以前一直用VS 2012来调试C/C++代码,F5.F10.F11用起来甚是顺手,前面也写过一篇关于VS最好用的快捷键:Visual Studio最好用的快捷键(你最喜欢哪个), 所以对于调试C/C+ ...
- Eclipse的调试功能(转)(让Eclipse也能有VS的即时窗口那样的即时代码调试功能)
前言:可以很明确的说明,eclipse也有像vs那样的即时窗口来运行即时代码的功能. 调试的界面如下: 如果要像vs那样的即时调试功能,需要做一些设置,就是Expressions功能. 开通步骤:Wi ...
- (译)关于使用Eclipse Memory Analyzer的10点小技巧
作者 Rave_Tian 2016.02.01 17:56* 字数 2988 阅读 520评论 0喜欢 0 分析和理解应用的内存使用情况是开发过程中一项不小的挑战.一个微小的逻辑错误可能会导致监听器没 ...
- [转载]eclipse的远程调试功能配置
原文地址:eclipse的远程调试功能配置作者:我的 用途:web应用部署并运行于外部(区别于eclipse环境中启动的)应用服务器中,当出现问题时,可以使用eclipse工程的源代码进行跟踪调试. ...
- Eclipse调试Java的10个技巧【转】
clipse调试Java的10个技巧 先提三点 不要使用System.out.println作为调试工具 启用所有组件的详细的日志记录级别 使用一个日志分析器来阅读日志 1.条件断点 想象一下我们平时 ...
- 【转】天啦噜!原来Chrome自带的开发者工具还能这么用!(提升JS调试能力的10个技巧)
天啦噜!原来Chrome自带的开发者工具还能这么用! (提升JS调试能力的10个技巧) Chrome自带开发者工具.它的功能十分丰富,包括元素.网络.安全等等.今天我们主要介绍JavaScript ...
- Eclipse中调试Android技巧
Android eclipse中程序调试 一:断点调试 用eclipse开发android程序的时,跟VS一样是可以断点单步调试的. 步骤如下. 1 设置断点:在编码窗体的左边框上用鼠标双击,或者右键 ...
- Android Studio调试功能使用总结【转】
Android Studio调试功能使用总结[转] 这段时间一直在使用Intellij IDEA, 今天把调试区工具的使用方法记录于此. 先编译好要调试的程序. 1.设置断点 选定要设置断点的代码 ...
随机推荐
- 51Nod 1632 B君的连通(递归,快速幂)
1632 B君的连通 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 B国拥有n个城市,其交通系统呈树状结构,即任意两个城市存在且仅存在一条交通线将其连接.A国是B ...
- python笔记三(面向对象)
Python3 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触 ...
- TI-RTOS 定时器的使用
定时器 在TI-RTOS中属于内核的一部分,因此想了解它的使用还是要阅读Bios_User_Guide.pdf. 主要用到这么几个API, 加粗字体 更多的定义可以在 ..\packages\ti\s ...
- zookeeper部署和运行
环境准备: 操作系统,此处使用windows系统 Java运行环境,JDK1.6以上 下载对应操作系统zookeeper安装包zookeeper-x.x.x.tar.gz,下载地址:http://zo ...
- Maven中央仓库源地址改为阿里云(IDEA)
我的Maven是IDEA2017.1.2集成的,所以settings.xml在此位置 E:\Program Files\JetBrains\IntelliJ IDEA 2017.1.2\plugins ...
- 使用pscp命令在Windows与linux之间拷贝文件
在Linux环境下做开发时,我们可能会在windows下远程控制Linux系统,本文介绍如何使用putty的pscp.exe在Windows和 Linux(本文使用fedora)之间copy文件. 工 ...
- Python自建logging模块
本章将介绍Python内建模块:日志模块,更多内容请从参考:Python学习指南 简单使用 最开始,我们用最短的代码体验一下logging的基本功能. import logging logger = ...
- 【开发技术】常用正则表达式大全!(例如:匹配中文、匹配html)
匹配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以用来计算字符串的长度 ...
- jsp页面中的$(param.xxx)
$(param.user)相当于<%=request.getParameter("user")%> $(paramValues.favorites[0])相当于< ...
- [转] Freemarker的常用技巧总结
1,截取字符串 有的时候我们在页面中不需要显示那么长的字符串,比如新闻标题,这样用下面的例子就可以自定义显示的长度 < lt. <= lte. > gt. >= gte < ...