在本文中,作者将使用大家经常使用的的开发工具Eclipse来调试Java应用程序。但这里介绍的调试方法基本都是通用的,也适用于NetBeans IDE,我们会把重点放在运行时上面。

在開始之前,推荐大家去看看Eclipse shortcuts这篇文章,它将会给你带来非常多方便。在本文中使用的是Eclipse Juno版(Eclipse 4.2),在開始前给大家提3点建议!

不要使用System.out.println作为调试工具

把全部涉及到的组件日志级别激活并使用

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

1.条件断点

假设你不知道怎样加入断点,仅仅需点击左边面板(行号前面)断点即被创建。在调试界面中。“断点”视图会把全部被创建的断点列出来。我们能够给它加一个布尔条件,也就是说。该断点会被激活而且假设布尔条件为真。就会运行该断点。否则将会跳过往下运行。

2.异常断点

在断点视图中,有一个J!标记button!我们能够使用该button来加入一个Java异常断点。

比如,我们想让程序在遇到空指针异常(NullPointerException)时,仍然能继续调试。那么我们能够使用该button来加入一个异常断点!

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

3.监视点

这是一个非常好的功能,当选定的属性訪问或改动程序时,程序会停止运行并同意进行调试。在Outline视图中选择一个类变量并从上下文菜单中选择切换监视点。属性监视点将会被创建,在断点(Breakpoints)视图中会把全部监视点用列表的形式显示出来。

4.评估/检查

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

5.改动变量值

在调试过程中,我们能够改动变量值。先选好一个变量然后进入变量视图(Variables view)。依据变量类型在其相应的Value列里输入值就可以。

6.在Main函数里面停止运行

在运行/调试设置中,编辑配置对话框中有“Main”这个选项卡,我们能够勾选“Stop in main”这个复选框。假设选中。那么在调试一个基于main方法的Java程序时,程序会在main方法第一行位置便停止运行。

7.环境变量

并非在系统属性中加入环境变量,我们能够在编辑配置对话框中非常方便地进行加入。

8.Drop to Frame

这也是我最喜欢的一个功能。调试期间。能够又一次跳到调用堆栈框架的開始处运行。而且变量值也会回到最初。依据回档调整堆栈的深度。这个功能的主要用途是全部变量状态能够高速回到方法開始运行时候的样子。然后你能够又一次进行一遍一遍运行,这样就能够在你关注的地方进行多次调试,可是在运行过程中也会产生一些副作用。比方插入到数据库里面的数据是无法删除的!

9.分布过滤

当我们进入(F5)方法的时候,我们还能够訪问其外部库(比方java.*),我们可能不需要这个库,就能够在Perference选项卡页面加入一个过滤器来排除这个包。

10.进入、跳出和返回

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

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

F6——跳出:移动到下一行。假设在当前行有方法调用,那么会直接移动到下一行运行。

不会进入被调用方法体里面。

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

F8——移动到下一个断点处运行。

Java程序猿必知的10个调试技巧的更多相关文章

  1. Java程序员应该知道的10个调试技巧

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

  2. (转) Java程序员应该知道的10个调试技巧

    原地址:http://www.csdn.net/article/2012-09-03/2809495-java-debugging-tips-with-eclipse 调试可以帮助识别和解决应用程序缺 ...

  3. (转)Java程序员应该知道的10个调试技巧

    (转自 酷勤网 – 程序员的那点事!http://www.kuqin.com/) 试可以帮助识别和解决应用程序缺陷,在本文中,作者将使用大家常用的的开发工具Eclipse来调试Java应用程序.但这里 ...

  4. Java程序员必须知道的10个调试技巧

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

  5. 每一个程序猿必知之SEO

    似乎由于受这篇文章的影响 http://katemats.com/what-every-programmer-should-know-about-seo/ 于是我也觉得我应该写一个每一个程序猿必知之S ...

  6. 程序猿必知必会Linux命令之awk

    前言 对于一名专业的程序员来说,Linux相关知识是必须要掌握的,其中对于文本的处理更是我们常见的操作,比如格式化输出我们需要的数据,这些数据可能会来源于文本文件或管道符,或者统计文本里面我们需要的数 ...

  7. Java程序员应该知道的10个Eclipse调试技巧

    Eclipse是众多Java程序员实用的开发工具,其中开发技巧也是繁多,但作为优秀的Java程序员,需要掌握最起码的调试技巧. 1 条件断点 2 异常断点 3 监视点 4 评估/检查 5 修改变量值 ...

  8. Java程序员应该知道的10个面向对象理论

    英文原文:10-object-oriented-design-principles 面向对象理论是面向对象编程的核心,但是我发现大部分 Java 程序员热衷于像单例模式.装饰者模式或观察者模式这样的设 ...

  9. Java程序员应当知道的10个面向对象设计原则

    面向对象设计原则是OOPS编程的核心, 但我见过的大多数Java程序员热心于像Singleton (单例) . Decorator(装饰器).Observer(观察者) 等设计模式,而没有把足够多的注 ...

随机推荐

  1. python RESTful API框架:Eve 高速入门

    Eve是一款Python的REST API框架.用于公布高可定制的.全功能的RESTful的Web服务.帮你轻松创建和部署API,本文翻译自Eve官方站点: http://python-eve.org ...

  2. 魔兽世界serverTrinitycore分析一:前言

    一:简单介绍 项目地址:https://github.com/TrinityCore/TrinityCore 帖一段官网介绍吧 TrinityCore is a MMORPG Framework ba ...

  3. 论Node在构建超媒体API中的作用

    论Node在构建超媒体API中的作用 作者:chszs,转载需注明. 博客主页:http://blog.csdn.net/chszs 超媒体即Hypermedia,是一种採用非线性网状结构对块状多媒体 ...

  4. 74.sscanf数据扫描

    "%[0-9A-Za-z] 读取一个集合,遇到不是数组或者大小写字母跳出   %*[^0-9A-Za-z]读取所有的非数字字母的字符,忽略 示例: ]= "123sadsadasd ...

  5. Codefroces 831B Keyboard Layouts

    B. Keyboard Layouts time limit per test 1 second memory limit per test 256 megabytes input standard ...

  6. 洛谷 P1679 神奇的四次方数

    P1679 神奇的四次方数 题目描述 在你的帮助下,v神终于帮同学找到了最合适的大学,接下来就要通知同学了.在班级里负责联络网的是dm同学,于是v神便找到了dm同学,可dm同学正在忙于研究一道有趣的数 ...

  7. 词向量 word2vec

    看的这一篇的笔记 http://licstar.net/archives/328 看不太懂. 要学的话,看这里吧,这里把一些资料做了整合: http://www.cnblogs.com/wuzhitj ...

  8. [CortexM0--stm32f0308]discovery开发板

        问题描写叙述:stm32提供了很多IC入门级开发板,价格还是蛮廉价的. stm32f0308-discovery就是一款cortex-m0架构的入门级开发板. 例如以下对其进行下简介. IO便 ...

  9. hiho 1182 : 欧拉路·三

    1182 : 欧拉路·三 这时题目中给的提示: 小Ho:是这种.每次转动一个区域不是相当于原来数字去掉最左边一位,并在最后加上1或者0么. 于是我考虑对于"XYYY",它转动之后能 ...

  10. Shell中反引号(`)与$()用法的区别

    今天有人提问: echo `echo \\\\\\\w` echo $(echo \\\\\\\w) 为什么输出的不一样? 这就引申出了另一个问题:反引号与$()有没有区别? 这是一个非常有意思的问题 ...