Eclipse下编写Java程序常用调试技巧10则打赏

编写程度比较庞大的时候,调试往往是纠错差错所必须的步骤,这点之前没有意识到,最近工作了才发现,当遇到一个庞大的程序出现小小的问题,而又不清楚程序底层的实现,调试则是最好的选择。

调试可以帮助识别和解决应用程序缺陷,本文将以大家常用的开发工具Eclipse来调试Java应用程序,但这里介绍的调试方法基本都是通用的,也适用于NetBeans IDE等,我们会把重点放在运行时上面。

在本文中使用的是Eclipse Juno版(Eclipse 4.2),在开始前给大家提3点建议!

a.不要使用System.out.println来调试自己的程序

b.把所有涉及到的组件日志级别激活并使用

c.使用日志分析器来读取日志

下面是10种常用的调试技巧

1.条件断点

大家应该都知道如何去添加一个断点吧,如果不知道,没关系,只需点击左边面板(行号前面)断点即被创建。在调试界面中,“断点”视图会把所有被创建的断点列出来。我们可以给它加一个布尔条件,也就是说,该断点会被激活并且如果布尔条件为真,就会执行该断点,否则将会跳过往下执行。
conditionaldebug
2.异常断点

在断点视图中,有一个J!标记按钮!我们可以使用该按钮来添加一个Java异常断点。例如,我们想让程序在遇到空指针异常(NullPointerException)时,仍然能继续调试,那么我们可以使用该按钮来添加一个异常断点!
javaexceptionbreakpoint
3.监视点

这是一个非常好的功能,当选定的属性访问或修改程序时,程序会停止执行并允许进行调试。在Outline视图中选择一个类变量并从上下文菜单中选择切换监视点,属性监视点将会被创建,在断点(Breakpoints)视图中会把所有监视点用列表的形式显示出来。
watchpoint
4.评估/检查

按Ctrl+Shift+D或者Ctrl+Shift+I来显示选定变量或者表达式的值。我们也可以给一个变量或表达式添加永久观察点,当程序在调试时,这些观察点就会在表达式视图(Expression view)中显示出来。
watch
5.修改变量值

在调试过程中,我们可以修改变量值。先选好一个变量然后进入变量视图(Variables view),根据变量类型在其对应的Value列里输入值即可。
changevalue
6.在Main函数里面停止执行

在运行/调试设置中,编辑配置对话框中有“Main”这个选项卡,我们可以勾选“Stop in main”这个复选框。如果选中,那么在调试一个基于main方法的Java程序时,程序会在main方法第一行位置便停止执行。
Stopinmain
7.环境变量

并不是在系统属性中添加环境变量,我们可以在编辑配置对话框中很方便地进行添加。
environment-variable
8.Drop to Frame

这也是我最喜欢的一个功能。调试期间,可以重新跳到调用堆栈框架的开始处执行,并且变量值也会回到最初。根据回档调整堆栈的深度,这个功能的主要用途是所有变量状态可以快速回到方法开始执行时候的样子,然后你可以重新进行一遍一遍执行,这样就可以在你关注的地方进行多次调试,但是在执行过程中也会产生一些副作用,比如插入到数据库里面的数据是无法删除的!
droptoframe
9.分布过滤

当我们进入(F5)方法的时候,我们还可以访问其外部库(比如java.*),我们可能不需要这个库,就可以在Perference选项卡页面添加一个过滤器来排除这个包。
stepfilter
10.进入、跳出和返回

我把这个放在最后一点,在调试过程中,这些是必须要了解(最好掌握)的东西:

F5——进入:移动到下一个步骤,如果当前行有一个方法调用,该控件将会跳转到被调用方法的第一行执行。

F6——跳出:移动到下一行。如果在当前行有方法调用,那么会直接移动到下一行执行。不会进入被调用方法体里面。

F7——返回:从当前方法中跳出,继续往下执行。

F8——移动到下一个断点处执行。
steps
原文地址:javapapers 编译地址:张红月

Eclipse下编写Java程序常用调试技巧10则
文章《Eclipse下编写Java程序常用调试技巧10则》二维码
  • 微信打赏
  • 支付宝打赏

已有23条评论

  1. 无节操图片

    不错,值得收藏分享!

    2015-10-01 16:18 回复
  2. 陈玟予

    网站做的好棒哦

    2015-09-21 15:51 回复
  3. 歪妖内涵网

    很好的网站,赞一个,加油!

    2015-09-20 18:35 回复
  4. 最励志网

    分享一下我的网站,http://www.zuilizhi.net 最励志网

    2015-08-10 09:24 回复
  5. 车江涛

    实用

    2013-01-07 21:15 回复
  6. 车江涛

    2013-01-07 21:11 回复
  7. 宁波痔疮

    貌似java.的使用率还是比较普遍的吧,不国学起来也不是很简单

    2012-09-19 15:48 回复
  8. 电动玩具

    我们还可以访问其外部库(比如java.*),我们可能不需要这个库,就可以在Perference选项卡页面添加一个过滤器来排除这个包。

    2012-09-14 14:53 回复
  9. 淘开心玩具

    如果在当前行有方法调用,那么会直接移动到下一行执行。

    2012-09-14 14:52 回复
  10. 淘开心

    调试期间,可以重新跳到调用堆栈框架的开始处执行,并且变量值也会回到最初。

    2012-09-14 14:52 回复
  11. 小谭

    支持……

    2012-09-13 21:47 回复
  12. 篮球比分

    看不懂

    2012-09-12 13:54 回复
  13. 就是哈哈

    只有更新速度够快,俺们这些粉丝才能更忠实!

    2012-09-11 16:05 回复
  14. 旅途者

    这是个细活,费心费脑呀……

    2012-09-11 15:02 回复
  15. 藏章博客

    额,一般都是使用断点调试,但是使用system.out.print来调试也是很不错的选择

    2012-09-11 13:10 回复
  16. 游客 453

    很喜欢博主的博客,以后多多交流…我的小站:太原网站建设http://www.jianweiliu.com,欢迎指点

    2012-09-11 10:17 回复
  17. 大猫

    最近也在学习java呢

    2012-09-11 09:35 回复
  18. 老驴

    说来惭愧,在学校时主学的Java,到现在基本上忘完了。。。

    2012-09-10 22:20 回复
  19. 三国塔防魏传

    确实很庞大的工程,出一点差错得要搞很久!

    2012-09-10 10:24 回复

(必填)

(必填)

(可选)