但行好事
莫论前程❤

Eclipse使用—-Debug使用详解

查看当前数据的内容:
鼠标选中+ctrl+shift+i

一、Debug视图

调试中最常用的窗口是:

窗口说明
Debug窗口主要显示当前线程方法调用栈, 以及代码行数(有调试信息的代码)
断点Breakpoints窗口=> 断点列表窗口,可以方便增加断点,设置断点条件,删除断点等
变量Variables窗口=> 显示当前方法的本地变量,非static方法,包含this应用,可以修改变量值
代码编辑窗口=> 这个不用多说了
输出Console窗口=> 日志等输出内容,调试时,可以将关注的组件级别设置低一点,以便获得跟多输出信息

另外辅助的窗口有:

窗口说明
表达式expression窗口=> 写上自己需要观察的数据的表达式,或者修改变量值
Display窗口=> 可以在display中执行代码块,输出内容等
大纲Outline窗口=> 查看当前类的方法,变量等
类型层级Type hierarchy窗口=> 查看当前所在类的继承层次,包括实现接口,类继承层次
方法调用关系Call hierarchy窗口=> 查看当前方法被哪些方法调用,调用方法在哪些类中、第几行,可以直接打开对应的方法
搜索结果Search窗口=> 结合快捷键可以查看变量、方法等在工作空间、项目、工作集中被引用或定义的代码位置

1)窗口全览:

img

img

2)Debug View(线程堆栈视图):

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

img

  • 1、表示当前实现继续运行直到下一个断点,快捷键为F8。
  • 2、表示打断整个进程
  • 3、表示进入当前方法,快捷键为F5
  • 4、表示运行下一行代码,快捷键为F6
  • 5、表示退出当前方法,返回到调用层,快捷键为F7
  • 6、表示当前线程的堆栈,从中可以看出在运行哪些代码,并且整个调用过程,以及代码行号

详细介绍:

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

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

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

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

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

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

img

步骤 2:选择‘Use Step Filters’

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

步骤 4:点击‘Apply’

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

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

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

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

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

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

Eclipse通过Suspend与Resume来支持线程的暂挂与恢复。一般来讲,Suspend适用于多线程程序的调试,当需要查看某一个线程的堆栈帧及变量值时,我们可以通过Suspend命令将该线程暂挂。Resume用于恢复。

有两种Resume需要注意:

第一是当在调试过程中修改程序代码,然后保存,点击Resume,此时程序会暂挂于断点。

第二是当程序抛出异常时,运行Resume,程序也会暂挂于断点。

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

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

1、调试执行

标记功能快捷键描述
6.4Step InfoF5-> 单步进入(如果有方法调用,将进入调用方法中进行调试);
6.4Step OverF6-> 单步跳过(不进入行的任何方法调用中,直接执行完当前代码行,并跳到下一行);
6.4Step ReturnF7-> 单步返回(执行完当前方法,并从调用栈中弹出当前方法,返回当前方法被调用处);
6.5ResumeF8-> 恢复正常执行(直到遇到下一个断点);
7.4Run to LineCtrl+R-> 执行到当前行(将忽略中间所有断点,执行到当前光标所在行);
6.3Drop To Frame-> 回退到指定方法开始处执行,这个功能相当赞。 在方法调用栈上的某个方法右键,选择Drop To Frame就可以从该方法的开始处执行 比如重新执行本方法,可以在本方法上用Drop To Frame,将从本方法的第一行重新执行。 当然对于有副作用的方法,比如数据库操作,更改传入参数的对象内容等操作可能重新执行就再是你想要的内容了。
6.1+6.2Copy Stack-> 拷贝当前线程栈信息
赞(1) 打赏
未经允许不得转载:刘鹏博客 » Eclipse使用—-Debug使用详解
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏