设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

使用 Eclipse 调试 Java 程序的 10 个技巧

2013-4-10 10:33| 发布者: 红黑魂| 查看: 2750| 评论: 0|来自: 开源中国

摘要:   你应该看过一些如《关于调试的N件事》这类很流行的帖子 。假设我每天花费1小时在调试我的应用程序上的话,那累积起来的话也是很大量的时间。由于这个原因,用这些时间来重视并了解所有使我们调试更方便的功能。 ...

- 导航器:使用键盘


 如果避免使用鼠标的话,你的操作速度会更快。你至少应该如下的快捷键:


  • F5 – “单步进入”
  • F6 – “单步执行并跳过”
  • F7 – “单步执行并返回”
  • F8 – “继续执行”
  • Ctrl+Shift+B – “添加断点”
  • Ctrl+Shift+I – “检查”


- 断点视图:Watchpoints


  如果改变这个变量会有什么结果?! 有时候创建一个watchpoint对于调试会非常有用。调试器会停止,不管这个被观察的字段是被修改还是被读取 - 你可以自己来配置决定。你只需双击一个字段,然后你就可以在断点视图中看到watchpoint,并且可以编辑它的属性。你甚至可以一个访问次数,这意味着当变量被访问的次数达到这个数量的时候,调试器会停止。这对于普通的断点也适用。


Watch Point


- 友好的可读的对象

变量视图是使用对象的toString方法来现实对应的值。因为这个原因,如果提供友好的toString方法实现,对调试来说会非常有用。在javadoc中关于java.lang.Object的默认toString实现,也是这样推荐的:

返回一个表示该对象的字符串。通常<code>toString</code>方法返回这么一个字符串,“字面表示”该对象。返回结果必须是一个简洁却富含可表示该对象的信息,并且友好可读取。我们推荐所有的子类都覆盖这个方法。

你可以参考commons-lang中的 ToStringBuilder。它提供一些功能来编写 (引用自javadoc ) "良好并连贯” 的toString方法。

默认的ToString

Default-ToString 
默认的ToStringBuilder例子
ReflectionToStringBuilder 
ToStringBuilder例子 – 多行文本风格

如果你不能修改toString实现,例如你现在使用框架或者一个外部的API,你可以有另外一个选择,在Eclipse中创建一个“Detail Formatter”。你需要在变量视图中右击一个对象,并点击“New Detail Formatter…”。然后你就可以输入一些代码,用于展现这个对象。 

 

英文原文:Again! – 10 Tips on Java Debugging with Eclipse


参与翻译(3人)

酷毙
1

雷人

鲜花

鸡蛋

漂亮

刚表态过的朋友 (1 人)

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

一个起步晚,就说明根本没有面对现实的勇气。
google才几岁?
[url=http:///].ankor[/url] <a href="http:///">.ankor</a>
谈红色变,红是造假的代名词吧,红你妹啊。
: 看着牙疼!
看着牙疼!
搞笑呢?
能说脏话吗?不能,那没什么好说的了!
苏苏呵呵
哦?
有人爱我吗?
System76还有自己的OS。现在可以递送到很多地区了。
英语太差了,回去补课吧。
腾讯,多年在中国占据软件第一的位置,可惜,除了QQ、微信外,什么都没有做出来。
联合查询呢?
hash join有了么?
垃圾文章!
挺好
中国,还得是华为!赞!
中国人就是不干正事,搞什么少数民族语言,把libreoffice加上系列码,都是找骂的事,就是不干正事。
腾讯也搞芯片,太搞笑了吧?腾讯存在多少年了?过去这么多年腾讯干什么去了?
小米都造出自己的松果仁了,腾讯干什么了?
最后三个图的区别是这样的吗?不对的地方请指出
class B{void m(){t();}void m1(){s();}
class B{void m(){}void m1(){t();}void m2(){s();}
class B{void m(){t();s();}
hello
测试是不是真的
好个屌,就是一骗子
喜大普奔!这个.net core的广告我非常赞同!
PgSQL迟早会是第一。
Windows只是个OS,LINUX是整个完整的开发、应用、办公环境。有什么好比的呢?
把买Windows的钱捐给Linux基金更好吧。
一群无聊的人
上述表达式有一处错误。
老实说,除了最后一个,其他我都会
,请重新启动计算机!
你好,请问analysis中的属性标签是如何定义的?比如:“role”。另外,这里的timepark如何加入的?
我和我的小伙伴都惊呆了!
database呢?
node.js??
哈哈
其实主要就是没有好的office和email-client。
土豪,我们做朋友吧!
病的不轻啊。
这个游戏从哪里下载的
太给力了!
太给力了!
太给力了!
太给力了!
按照步骤搭建不出来求救
史无前例的震撼!
太给力了!
太给力了!
发个评论测试一下这个滚动框是不是真的
太给力了!
太给力了!
一个起步晚,就说明根本没有面对现实的勇气。
google才几岁?
[url=http:///].ankor[/url] <a href="http:///">.ankor</a>
谈红色变,红是造假的代名词吧,红你妹啊。
: 看着牙疼!
看着牙疼!
搞笑呢?
能说脏话吗?不能,那没什么好说的了!
苏苏呵呵
哦?
有人爱我吗?
System76还有自己的OS。现在可以递送到很多地区了。
英语太差了,回去补课吧。
腾讯,多年在中国占据软件第一的位置,可惜,除了QQ、微信外,什么都没有做出来。
联合查询呢?
hash join有了么?
垃圾文章!
挺好
中国,还得是华为!赞!
中国人就是不干正事,搞什么少数民族语言,把libreoffice加上系列码,都是找骂的事,就是不干正事。
腾讯也搞芯片,太搞笑了吧?腾讯存在多少年了?过去这么多年腾讯干什么去了?
小米都造出自己的松果仁了,腾讯干什么了?
最后三个图的区别是这样的吗?不对的地方请指出
class B{void m(){t();}void m1(){s();}
class B{void m(){}void m1(){t();}void m2(){s();}
class B{void m(){t();s();}
hello
测试是不是真的
好个屌,就是一骗子
喜大普奔!这个.net core的广告我非常赞同!
PgSQL迟早会是第一。
Windows只是个OS,LINUX是整个完整的开发、应用、办公环境。有什么好比的呢?
把买Windows的钱捐给Linux基金更好吧。
一群无聊的人
上述表达式有一处错误。
老实说,除了最后一个,其他我都会
,请重新启动计算机!
你好,请问analysis中的属性标签是如何定义的?比如:“role”。另外,这里的timepark如何加入的?
我和我的小伙伴都惊呆了!
database呢?
node.js??
哈哈
其实主要就是没有好的office和email-client。
土豪,我们做朋友吧!
病的不轻啊。
这个游戏从哪里下载的
太给力了!
太给力了!
太给力了!
太给力了!
按照步骤搭建不出来求救
史无前例的震撼!
太给力了!
太给力了!
发个评论测试一下这个滚动框是不是真的
太给力了!
太给力了!

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部