http://blog.jobbole.com/93421/

一、Eclipse调试介绍

二、Eclipse中和Debug相关的视图

  • 2.1 Debug View
  • 2.2 Variables View
  • 2.3 Breakpoints View
  • 2.4 Expressions View
  • 2.5 Display View

三、Debug

3.1 设置断点

3.2 调试程序

3.2.1 调试本地 Java 语言程序

3.3.2 远程调试

一、Eclipse调试介绍

使用过Eclipse的人都知道,Eclipse都是自带Java调试器的,可以提供很多基本的调试功能。 Eclipse 平台工作台及其工具是围绕 JDT 组件构建的,该组件为 Eclipse 提供了下列特性:

项目管理工具 透视图和视图 构造器、编辑器、搜索和构建功能 调试器

二、Eclipse中和Debug相关的视图

图 1. Eclipse Debug 透视图的一般视图(该视图可以在Eclipse界面的右上角位置点击Debug按钮进入)


Debug View:

Debug视图允许您在工作台上管理正在调试和运行的程序,他显示了你正在调试的程序中挂起的线程的堆栈帧,程序中的每个线程作为树的节点出现。他展示了正在运行的每个目标的进程。如果线程被挂起,它的堆栈帧以子元素的形式展示。以下是一些常用的debug按钮:

Skip All Breakpoints::将所有断点设置为被跳过的,设置了Skip All Breakpoints之后,所有断点上都会有一个斜线,表示断点将被跳过,线程不会在该断点处被挂起。

Drop to Frame:这个命令可以让程序回到当前方法的开头第一行重新开始执行,可以重新执行这个java堆栈帧,可以选择一个指定的堆栈帧,然后点击 Drop to Frame,这样就可以重新进入指定的堆栈帧。使用Drop to Frame时候需要注意:

1.不能drop到已经执行过的方法栈中的方法中。

2.drop到stack frame中时,不会改变全局数据原有的值,比如,一个包含元素的vertor并不会被清空。

Step Filters:这个功能比较简单,就是当我们在debug的时候想要忽略一些我们不关注的类时,可以开启Step Filters进行过滤,程序会一直执行直到遇到未经过滤的位置或断点。Step Filters功能由Use Step FiltersEdit Step FiltersFilter TypeFilter Package四项组成。具体操作如下:

步骤 1: Windows -> Preferences -> Java -> Debug -> Step Filtering.

步骤 2:选择‘Use Step Filters’.

步骤 3:在屏幕上选中所需的选项。你可以添加你自己代码库中的部分代码。

步骤 4:点击‘Apply’.

原理上,Edit Step Filter命令用于配置Step Filter规则,而Filter TypeFilter Package分别指的是过滤的Java类型与Java Package。

Step Return:跳出当前方法,在被调用方法的执行过程中,使用Step Return会在执行完当前方法的全部代码后跳出该方法返回到调用该方法的方法中。

Step Over:在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完在停止,也就是把子函数整个作为一步。

Step Into:单步执行,遇到子函数就进入并且继续单步执行

Resume:恢复暂停的线程,直接从当前位置跳到下一个断点位置。

Suspend:暂停选定的线程,这个时候可以进行浏览或者修改代码,检查数据等。

Eclipse通过Suspend与Resume来支持线程的暂挂与恢复。一般来讲,Suspend适用于多线程程序的调试,当需要查看某一个线程的堆栈帧及变量值时,我们可以通过Suspend命令将该线程暂挂。Resume用于恢复。有两种Resume需要注意:第一是当在调试过程中修改程序代码,然后保存,点击Resume,此时程序会暂挂于断点。第二是当程序抛出异常时,运行Resume,程序也会暂挂于断点。

Terminate:Eclipse通过Terminate命令终止对本地程序的调试。

Disconnect:Eclipse使用Disconnect命令来终止与远程JVM的socket连接。


Variables View :

Variables View显示与Debug View中选定的堆栈帧相关的变量信息,调试Java程序时,变量可以选择将更详细的信息显示在详细信息窗格中。此外,Java对象还可以显示出其包含的属性的值。在该窗口中选中变量鼠标右键点击可以进行许多操作,主要操作有以下这些:

All Instances:打开一个对话框来显示该java类的所有实例,使用该功能需要java虚拟机支持实例的检索。

All References::打开一个对话框来显示所有引用了该变量的java对象,

Change Value::更改变量的值,该功能可以和Drop to Frame联合使用进行程序的调试。使用这两个功能就可以代替重新debug

Copy Variables:复制变量的值,尤其在变量值很长(比如json数据)的时候,这个功能就派上用场了。

Find:有的时候一个类中变量特别多的时候,可以进行查找。


Breakpoints View :

Breakpoints View将列出你在当前工作区间里设置的所有断点,双击断点可以进入到程序中该断点的位置。还可以启用或禁用断点,删除,添加新的,根据工作组或点命中计数给他们分组。在使用断点是有以下两个技巧是十分有用的:

Hit Count: 是指定断点处的代码段运行多少次,最典型的就是循环,如果要让一个循环执行10次就线程挂起,则指定Hit Count值为10,那么当前的循环执行到第九次的时候就会挂掉。

Conditional:顾名思义,就是条件判断,例如我们需要循环变量i==10时,线程挂起,则条件设定为i==10,选择Suspend when “true”。

那如果上面的Hit Count和Conditional都选择的话,如果表达式和值设置不合理则会失效。如果选择Suspend when value changes,那么可能在Conditional在变量值发生改变的时候就挂起。

Expressions View :

要在 Debug 透视图的编辑器中求表达式的值,选中设置有断点的一整行,并在上下文菜单中选择 Inspect 选项。表达式是在当前堆栈帧的上下文中求值的,其结果显示在 Display 窗口的 Expressions 视图中。 比如我想要计算变量a+b的值,那么就可以在表达式视图中加一个表达式:a+b


Display View :

可以使用这个视图,输入或者演算一些新的代码。这些代码在当前的调试位置的上下文环境中被执行,这意味着,你可以使用所有变量甚至是内容助手。要执行你的代码的话,只需标记它,并使用右键菜单或者CTRL+U(执行)或者 CTRL+SHIFT+I (检查).

三、Debug

设置断点

在源代码文件中,在想要设置断点的代码行的前面的标记行处,双击鼠标左键就可以设置断点,在相同位置再次双击即可取消断点。有的时候我们还有这样的需要,就是我并不想一行一行的执行代码,比如一个for循环会循环1000多遍,我只想在第500遍的时候让线程挂起进行调试,这个时候我们可以使用条件断点。 设置条件断点:我们可以给该断点设置触发条件,一旦满足某条件是才开始调试,可以在断点处点击鼠标右键,选择Breakpoint Properties进入断点设置页面,刚刚在讲断点视图的时候我们学到过Hit CountConditional的用法,这里可以设置条件和执行次数。

调试程序

1、调试本地 Java 语言程序

在所有调试中,调试一个Java程序是最简单的,主要有设置断点、启动调试、单步执行、结束调试几步。

设置断点:前面已经说过。

启动调试:Eclipse提供四种方式来启动程序(Launch)的调试,分别是通过菜单(Run –> Debug)、图标(“绿色臭虫”)、右键->Debug As以及快捷键(F11),在这一点上,与其他命令(例如Run)类似。

单步执行:主要使用前面讲过的几个视图进行调试,其中debug视图中的几个按钮有快捷键:

Step Retuen(F7)

Step Over (F6)

Step Into (F5)

结束调试:通过Terminate命令终止对本地程序的调试。

2、远程调试

远程调试主要用于调试非本地Java程序,这里的非本地并不是只在其他人的机器上才叫非本地。运行在本机上的Web服务器上的程序在调试时也需要使用远程调试。远程调试的大致步骤和调试本地Java语言程序基本一直,只是在设置上有些不同。

Eclipse 调试器可以调试远程应用程序。它可以连接到一个运行 Java 应用程序的远程 VM,将自己连接到该应用程序上去。使用远程调试会话与使用本地调试会话大致相同。但是,远程调试配置需要在 Run > Debug 窗口中配置一些不同的设置。需要在左侧视图中先选择 Remote Java Application 选项,然后单击 New。这样就创建了一个新的远程启动配置,会显示出三个选项卡:ConnectSource 和 Common

在 Connect 选项卡的 Project 字段,选择在启动搜索源代码时要引用的项目。在 Connect 选项卡的 Host 字段,输入运行 Java 程序的远程主机的 IP 地址或域名。在 Connect 选项卡的 Port 字段,输入远程 VM 接收连接的端口。通常,该端口在启动远程 VM 时指定。如果想让调试器决定在远程会话中 Terminate 命令是否可用,可以选择 Allow termination of remote VM 选项。如果希望可以终止连接的 VM,则选择该选项。现在,在选择 Debug 选项时,调试器会尝试连接到指定地址或端口的远程 VM,结果会在 Debug 视图中显示出来。

Eclipse调试方法相关推荐

  1. Eclipse 调试器(引用IT168)

    Eclipse 调试器:零距离接触实战技巧 2011年11月25日01:29IT168 字号:T|T 调试的方法虽然千千万万,但归根结底,就是找到引发错误的代码.Eclipse调试器的目标是让程序员能 ...

  2. eclipse调试详解

    eclipse调试详解 作者: 高州人家 来源: 网络转载 浏览: 1610 次 好评: 0分 [ 小 中 大 ] 2007-11-16 本地调试     Java   调试器具有客户机/服务器设计, ...

  3. Eclipse调试Bug的七种常用技巧(转)

    注意事项及小结: (1)Line Breakpoint: 如果设置Conditional,监控的变量需要比当前行高一级block,譬如for(int i=0;i<20;i++)中的i,for循环 ...

  4. ubuntu 环境下调试mysql源码_Linux中eclipse调试mysql源代码

    Linux中eclipse调试mysql源代码 系统:Redhat Linux 6.4 准备的包: eclipse-cpp-luna-SR1-linux-gtk-x86_64 .tar.gz cmak ...

  5. Eclipse调试Logcat类的说明

    Eclipse调试Logcat类的说明 Android的Logcat用于显示系统的调试信息,只需在eclipse中启动Android模拟器,切换到DDMS或debug模式下,就会有Logcat窗口,窗 ...

  6. Python调试方法

    程序能一次写完并正常运行的概率很小,基本不超过1%.总会有各种各样的bug需要修正.有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误 ...

  7. windows下Eclipse调试ffmpeg

    windows下mingw编译ffmpeg 一.编译环境配置 1.Mingw的安装 (1).MINGW的下载网址:https://sourceforge.net/projects/mingw/file ...

  8. Linux内核调试方法总结【转】

    转自:http://my.oschina.net/fgq611/blog/113249 内核开发比用户空间开发更难的一个因素就是内核调试艰难.内核错误往往会导致系统宕机,很难保留出错时的现场.调试内核 ...

  9. 使用eclipse调试hive mapreduce

    我们知道Hive经过一些转换后,提交job到hadoop,一般我们只能debug到submitJob这里,而不知道后面那些mapper到底是怎样执行的.如果想要跟踪一下像SelectOperator是 ...

最新文章

  1. SQL语句中 LIMIT与OFFSET
  2. python异步和多线程_Python 异步 IO(asyncio)、多进程、多线程性能对比
  3. python爬取网易云音乐问题陈述_python 网易云音乐 评论爬取问题
  4. [转]使用 LDAP 组或角色限制访问,包含部分单点登录SSO说明
  5. batchsize大小对训练速度的影响
  6. mysql和维信公众号_mysql实用指南
  7. lsb_release: command not found 解决
  8. GIS数据处理-OSGB转换3dTiles
  9. win10系统网卡驱动异常,错误代码56
  10. Unity3D FingerGestures 手势插件使用
  11. Unity IOS微信登录
  12. 中国移动云能力中心IaaS产品部2021年招聘
  13. 方差分析——单因素方差分析
  14. python3实现二叉树的简单遍历(DLR 、LDR、LRD)
  15. java的Intersect用法_SQL INTERSECT的用法
  16. 几种实现动画效果的优化方法(will-change属性的使用)
  17. 怎么把云服务器的文件拷出来,怎么把云服务器的文件拷出来
  18. 科幻风高绩效团队建设课程PPT模板
  19. c3po连接mysql带端口号_利用C3PO配置数据库连接池出现的问题
  20. 短视频营销与短视频营销的主流营销模式

热门文章

  1. 世界上最奇异的10种树,你都见过吗?
  2. 2019优质公众号大盘点,果断收藏了慢慢看吧 ~
  3. 毕业的那天,程序员师兄竟然让我去做这一行
  4. 马化腾最崇拜的作家吴晓波《历代经济变革得失》读书笔记
  5. 是否显示展开_Creo7.0教程之绝对精度对钣金件展开的作用详解
  6. html 输入框自动缩短 一行内显示,JQuery UI组合框自动补全功能改进版(即时全部显示+input内容保存)...
  7. yii 使用 有赞sdk_有赞ABTest系统:数据驱动增长实践
  8. lol战绩查询接口_LOL:莫名其妙被封号?3把躺赢局被说是代打
  9. python opencv 图像添加噪声_opencv+python同时加椒盐噪声和随机杂点噪声
  10. leetcode59. 螺旋矩阵 II