转:http://www.cnblogs.com/lingiu/p/3802391.html

九个技巧:

  1. 逻辑结构
  2. 条件debug
  3. 异常断点
  4. 单步过滤
  5. 跳到帧
  6. Inspect
  7. expressions
  8. display
  9. 远程debug

  最早开始用eclipse的debug的时候,只会F5 F6 F7 F8,甚至F7都不是很搞的明白是怎么用的,那时候资浅,碰不到需要复杂debug的代码,慢慢工作深入了,场景碰多了,就需要各种debug技巧来提升定位bug效率,以前找人帮忙排查问题,看他开各种窗口debug各种溜甚是羡慕嫉妒恨,慢慢久病成医自己也用溜了eclipse的一些主要的debug技巧。稍作整理分享出来。

  F5678这四个基本技能就略过不说了,但是最基本的技能能解决90%问题,所以虽然略过不说 ,但是必须用的很溜,相信园友达人们这四个肯定比我用的溜的多。

1. 逻辑结构

逻辑结构主要用来展示map之类的collection数据结构存储的值的,它只展示存储值的逻辑部分,而屏蔽了数据结构详细的内部结构,更方便我们查看map之类collection结构里存储的值,推荐使用。

这个按钮就是展示逻辑结构的按钮,下面两个图,上图是不展示逻辑结构,下图是展示逻辑结构,很明显,下图的结构可读性更强,可以专注于debug的变量。

2. 条件debug

条件debug用在需要满足某种条件才会触发断点的场景,比如只有id是12345这条记录会有问题,那就当id等于12345时才触发断点,其他都放过。

右击断点选择断点属性,就能看到这样一个配置框,右边的文本区块可以填写条件代码,比如id==12345,由于每次都要做这个判断,如果循环数很大的话,还是有点点慢的,你可以去上个厕所接个水啊什么的,还是很方便的。

3. 异常断点

异常断点只要用在debug某种异常的时候,可以配置当这个异常出现后才触发断点,不需要debug去寻找异常。

点击这个红圈就能弹出异常断点的窗口,会列出你系统里的所有异常类,然后选择需要断点的异常就OK。

4. 单步过滤

单步过滤的场景是我们在使用F5来跟到某个方法内部的时候,经常会跟到一些我们确定不需要看的方法内部。

this.getTradeDetail(uid, itemStr.subString(0,5))

比如这行代码,想F5进入getTradeDetail内部,会首先执行itemStr.subString方法,会先进入subString方法,而这方法是jdk的String方法,确定没问题,不需要关心,单步过滤就是跳过这些我们想忽略的方法直接到目标方法内部的一种debug技巧。

Window > PreferencesJava > Debug > Step Filtering 设置过滤器, 可以选择需要过滤掉的包和类。同时要确保你在debug视图中启用了单步过滤,如下图。这样在使用单步调试的时候,就会使用到这个过滤功能。

上图是过滤器配置,典型的就是把jdk的一些类和包配置过滤。下图是要在debug时候开启单步过滤,否则不生效。

5. 跳到帧

跳到帧是一种重入技巧,在debug时,eclipse可以直接跳到调用栈中指定的任意桢,并且使JVM在此处重新运行。这使你可以重新运行你的部分代码,而不需要为了调试之前的代码而重新来一次。

要注意的是:已经被修改的变量不会被重置,它们会保留当时的值。

使用方式:选择调用栈中的一桢,点击按钮“跳到桢”

6. Inspect

inspect用来查看某个表达式的之,对于变量值debug很容查看,但是对于一个表达式的值就不容易查看,还是这句:

this.getTradeDetail(uid, itemStr.subString(0,5))

想看getTradeDetail的值,就没法想看变量值一样(虽然这个很有可能是赋值给一个变量...),要看这种表达式值,就需要inspect,具体做法是选中这行表达式,然后右击->inspect,或者更方便的快捷键组合:ctrl+shift+i,会弹出如下的展示表达式结果的框:

7. expressions

expressions窗口也是用来看变量或者表达式的值的,在windows->show viewz中打开expression窗口,然后在里面添加你想观察的表达式,比如还是这句:

this.getTradeDetail(uid, itemStr.subString(0,5))

然后debug的时候,就能看到被添加的表达式结果了,另外也能根据需要改value的值。

8. display

display也是用来观察和修改变量or表达式的,这个应该用的人比较多,在windows->show viewz中打开display窗口,可以在display窗口里写表达式,然后右击选择display运行查看结果或者ctrl+shift+D快捷键组合,表达式可以是程序中一行代码或者你自己写的一个赋值语句来改变变量值之类的。

9. 远程debug

远程debug可以用来调试远程服务器上的代码,保证你本地代码和远程部署的代码是一致,就可以通过这种方式debug服务器代码,这个是java web开发的一大利器,否则定位服务器问题简直是灾难。

远程debug需要服务器端启动jvm的时候做一些开启和端口的配置,具体的配置网上很多,搜一下即可。然后在本地的debug configuration中双击添加一个remote java application,填写远程主机的host和配置的debug端口,就可以开始debug了,如下图:

eclipse调试java程序的九个技巧的更多相关文章

  1. (转)eclipse调试java程序的九个技巧

    转自:http://www.cnblogs.com/lingiu/p/3802391.html 九个技巧: 逻辑结构 条件debug 异常断点 单步过滤 跳到帧 Inspect expressions ...

  2. 【Eclipse】调试java程序的九个技巧

    本文转自[半夜乱弹琴],原文地址:http://www.cnblogs.com/lingiu/p/3802391.html 九个技巧: 逻辑结构 条件debug 异常断点 单步过滤 跳到帧 Inspe ...

  3. eclipse debug调试java程序的九个技巧

    九个技巧: 逻辑结构 条件debug 异常断点 单步过滤 跳到帧 Inspect expressions display 远程debug 最早开始用eclipse的debug的时候,只会F5 F6 F ...

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

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

  5. 【转】使用 Eclipse 调试 Java 程序的 10 个技巧

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

  6. 浅谈1——用Eclipse调试JAVA程序

    本篇博客主要介绍如何用Eclipse调试简单的JAVA程序. 1.如下图,一个简单的JAVA程序  2.设置断点. 方法:选中需设置断点的行代码,按快捷键Ctrl+Shift+B,设置断点: 断点设置 ...

  7. 使用 Eclipse 调试 Java 程序的技巧

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

  8. Eclipse调试Java程序技巧

    主要步骤.Debug As"->"Java Application".双击设置断点,F5是跳进,F6是执行下一步,F7是跳出 在看这篇文章前,我推荐你看一下Ecli ...

  9. Eclipse 调试 Java 程序的技巧

    - 断点视图 : 条件断点 如果你只对应用中的某部分感兴趣的话,这个功能非常有用.例如,如果你要在第13次循环的时候检查程序,或者在一个抽象父类中调试某些功能,而你只关注其中一个具体的实现.你可以在断 ...

随机推荐

  1. Hadoop的学习--安装配置与使用

    安装配置 系统:Ubuntu14.04 java:1.7.0_75 相关资料 官网 下载地址 官网文档 安装 我们需要关闭掉防火墙,命令如下: sudo ufw disable 下载2.6.5的版本, ...

  2. jQuery源码学习感想

    还记得去年(2015)九月份的时候,作为一个大四的学生去参加美团霸面,结果被美团技术总监教育了一番,那次问了我很多jQuery源码的知识点,以前虽然喜欢研究框架,但水平还不足够来研究jQuery源码, ...

  3. 理解浏览器历史记录(2)-hashchange、pushState

    本文也是一篇基础文章.继上文之后,本打算去研究pushState,偶然在一些信息中发现了锚点变化对浏览器的历史记录也会影响,同时锚点的变化跟pushState也有一些关联.所以就花了点时间,把这两个东 ...

  4. dicom网络通讯入门(1)

    看标准 越看越糊,根本原因:dicom抽象得非常严重,是“专家”弄的.没办法. 又是什么服务类 又是什么sop,相信你把dicom标准看到头大 都不知如何下手. 不就是 socket么 这有何难. 首 ...

  5. LINQ to SQL语句(17)之对象加载

    对象加载 延迟加载 在查询某对象时,实际上你只查询该对象.不会同时自动获取这个对象.这就是延迟加载. 例如,您可能需要查看客户数据和订单数据.你最初不一定需要检索与每个客户有关的所有订单数据.其优点是 ...

  6. 在DevExpress中使用CameraControl控件进行摄像头图像采集

    在我们以前的项目了,做摄像头的图片采集,我们一般还是需要做一个封装处理的,在较新版本的DevExpress控件里面,增加了一个CameraControl控件,可以直接调用摄像头显示的,因此也可以做头像 ...

  7. 设计模式(八)桥接模式(Bridge Pattern)

    一.引言 这里以电视遥控器的一个例子来引出桥接模式解决的问题,首先,我们每个牌子的电视机都有一个遥控器,此时我们能想到的一个设计是——把遥控器做为一个抽象类,抽象类中提供遥控器的所有实现,其他具体电视 ...

  8. 【无私分享:ASP.NET CORE 项目实战(第八章)】读取配置文件(二) 读取自定义配置文件

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 我们在 读取配置文件(一) appsettings.json 中介绍了,如何读取appsettings.json. 但随之产生 ...

  9. jdk jre jvm 三者之间关系

    JDK JDK是java开发工具包,是Sun公司针对Java开发员的产品.     JDK 中包含JRE,在JDK安装的目录下有一个叫jre的目录,里面有两个文件夹,bin/和lib,其中bin就是j ...

  10. 《C#开发常用免费WebServices集合》

    天气预报 Web服务,数据来源于中国气象局 公用事业 http://www.webxml.com.cn/WebServices/WeatherWebService.asmx 中国股票行情 分时走势预览 ...