Debug在中Eclipse的应用
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 Filters
,Edit Step Filters
,Filter Type
,Filter Package
四项组成。具体操作如下:
步骤 1: Windows -> Preferences -> Java -> Debug -> Step Filtering.
步骤 2:选择‘Use Step Filters’.
步骤 3:在屏幕上选中所需的选项。你可以添加你自己代码库中的部分代码。
步骤 4:点击‘Apply’.
原理上,Edit Step Filter
命令用于配置Step Filter
规则,而Filter Type
与Filter Package
分别指的是过滤的Java类型与Java Package。
Step Return(F7):跳出当前方法,在被调用方法的执行过程中,使用Step Return
会在执行完当前方法的全部代码后跳出该方法返回到调用该方法的方法中。
Step Over(F6):在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完在停止,也就是把子函数整个作为一步。
Step Into(F5):单步执行,遇到子函数就进入并且继续单步执行
Resume(F8):恢复暂停的线程,直接从当前位置跳到下一个断点位置。
Suspend:暂停选定的线程,这个时候可以进行浏览或者修改代码,检查数据等。
Eclipse通过Suspend与Resume来支持线程的暂挂与恢复。一般来讲,Suspend适用于多线程程序的调试,当需要查看某一个线程的堆栈帧及变量值时,我们可以通过Suspend命令将该线程暂挂。Resume用于恢复。有两种Resume需要注意:第一是当在调试过程中修改程序代码,然后保存,点击Resume,此时程序会暂挂于断点。第二是当程序抛出异常时,运行Resume,程序也会暂挂于断点。
Terminate:Eclipse通过Terminate
命令终止对本地程序的调试。
Disconnect:Eclipse使用Disconnect
命令来终止与远程JVM的socket连接。
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
将列出你在当前工作区间里设置的所有断点,双击断点可以进入到程序中该断点的位置。还可以启用或禁用断点,删除,添加新的,根据工作组或点命中计数给他们分组。在使用断点是有以下两个技巧是十分有用的:
Hit Count: 是指定断点处的代码段运行多少次,最典型的就是循环,如果要让一个循环执行10次就线程挂起,则指定Hit Count值为10,那么当前的循环执行到第九次的时候就会挂掉。
Conditional:顾名思义,就是条件判断,例如我们需要循环变量i==10时,线程挂起,则条件设定为i==10,选择Suspend when “true”。
那如果上面的Hit Count和Conditional都选择的话,如果表达式和值设置不合理则会实效。如果选择Suspend when value changes,那么可能在Conditional在变量值发生改变的时候就挂起。
要在 Debug 透视图的编辑器中求表达式的值,选中设置有断点的一整行,并在上下文菜单中选择 Inspect 选项。表达式是在当前堆栈帧的上下文中求值的,其结果显示在 Display 窗口的 Expressions 视图中。
可以使用这个视图,输入或者演算一些新的代码。这些代码在当前的调试位置的上下文环境中被执行,这意味着,你可以使用所有变量甚至是内容助手。要执行你的代码的话,只需标记它,并使用右键菜单或者CTRL+U(执行)或者 CTRL+SHIFT+I (检查).。
条件断点
在源代码文件中,在想要设置断点的代码行的前面的标记行处,双击鼠标左键就可以设置断点,在相同位置再次双击即可取消断点。有的时候我们还有这样的需要,就是我并不想一行一行的执行代码,比如一个for循环会循环1000多遍,我只想在第500遍的时候让线程挂起进行调试,这个时候我们可以使用条件断点。 设置条件断点:我们可以给该断点设置触发条件,一旦满足某条件是才开始调试,可以在断点处点击鼠标右键,选择Breakpoint Properties
进入断点设置页面,刚刚在讲断点视图的时候我们学到过Hit Count
和Conditional
的用法,这里可以设置条件和执行次数。
远程调试
在进行Java的web开发时,通常服务器都是在linux服务器上搭建的,不方便调试。那我们怎样在本地调试linux运行的程序呢?
首先得在linux中tomcat下进行相应的设置,具体在tomcat目录下calalina.sh,详见下图:
调试好远程debug端口后,在本地eclipse配置远程调试,点击debug图标出现下拉菜单,选择debug configration选项进入debug设置页面。或者选择要调试的项目,右键选择debug,在选择debug configuration选项也可以进去设置页面。
Debug在中Eclipse的应用相关推荐
- Idea 如何在debug视图中调出更多的展示内容 (就像在Eclipse中看到的那样)
Idea的debug视图为我们做了许多默认的处理,如针对数组不显示null元素,自动选择集合类型的debug视图等,这些往往都不是我们需要的. 举个例子,ArrayList默认的初始容量是10,当插入 ...
- ARC在Release与Debug模式中内存释放的坑
以一个方法起头: - (void)createCat {NSObject *cat = nil;if (!cat) {cat = [[NSObject alloc] init];//1}//2 } 复 ...
- windows 中 Eclipse 打开当前文件所在文件夹
windows 中 Eclipse 打开当前文件所在文件夹 默认情况下使用eclipse打开当前文件所在文件夹很麻烦,需要右键点击 Package Explorer 中的节点选择属性,然后复制路径,再 ...
- 【Flutter】Flutter 调试 ( 调试回退功能 | Debug 调试中查看变量的方式 | 控制台信息 )
文章目录 一.调试回退功能 二.Debug 调试中查看变量的方式 三.Debug 控制台信息 四.相关资源 一.调试回退功能 在调试过程中 , 经常错过关键位置的调试 , 如没有进入关键方法进行调试 ...
- ubuntu 环境下调试mysql源码_Linux中eclipse调试mysql源代码
Linux中eclipse调试mysql源代码 系统:Redhat Linux 6.4 准备的包: eclipse-cpp-luna-SR1-linux-gtk-x86_64 .tar.gz cmak ...
- java中eclipse中运行程序的快捷键是什么?
java中eclipse中运行程序的快捷键是什么? 因帅被追杀灬 | 浏览 3393 次 我有更好的答案 2015-02-02 15:35 最佳答案 CTRL+F11,采纳哦 本回答由提问者推 ...
- 关于×××在DEBUG过程中可能出现的问题
最近在调试DEBUG过程中看到本文章,觉得对于×××错误信息不熟的人来说非常有用,几部囊括了所有的×××的DEBUG错误提示信息,并且作者对其进行了一定说明,遂转发希望对更多的人有帮助. 原文地址:× ...
- not found for signing config ‘debug‘Android中meta-data的作用xmlns:tools=“http://schemas.android.com/
目录 not found for signing config 'debug' Android中meta-data的作用 xmlns:tools="http://schemas.androi ...
- SOC EDS 中eclipse 中远程gdbserver调试与使用(超级详细)
SOC EDS 中eclipse 中远程gdbserver调试与使用(超级详细) 一.安装 二.建立远程调试 配置Debugger 启动 gdbserver 调试 三.简单的调试操作: 一.安装 DS ...
最新文章
- mysql日常错误信息解决方法:InnoDB: and force InnoDB to continue crash recovery here.
- hello1源码解析
- python hbase_Python操作Hbase
- 化浆池是什么东西_一种双工位浆化池的制作方法
- 百度地图jar包冲突,特别是定位包冲突com/baidu/location/Address/$a.class。
- 【linux指令】sed指令
- JZOJ 3427. 归途与征程
- 【数据仓库】Inmon与Kimball数仓理论对比
- java手机太亮,Android 亮度调节
- QT 按钮(4种样式)
- python ichat_Python使用微信itchat接口实现查看自己微信的信息功能详解
- SIFT特征提取原理
- C语言题目:输出三角形面积和周长 (15 分)
- 吴翰清​(道哥)眼中的机器智能:计算机的再发展
- linux脚本自动验证,一个无需交互,批量自动连接ssh执行命令的工具(免rsa密钥指纹验证)...
- 什么是 5G CPE
- 你是否有疑问,软件是如何驱动硬件,代码又是如何对计算机进行控制的呢?
- 2022秋季C语言专题实验07
- Docker部署Flask网站
- android工程文件assts,Android初始化FaceSDK报错
热门文章
- java设计模式—工厂模式
- Kotlin协程入门初级篇
- 大数据之-Hadoop3.x_MapReduce_FileInputFormat切片机制---大数据之hadoop3.x工作笔记0106
- AndroidStudio_android通过自定义来实现倒计时的AlertDialog---Android原生开发工作笔记245
- Elasticsearch--进阶-filter过滤---全文检索引擎ElasticSearch工作笔记014
- k8s核心技术-Controller(statefulSet)_部署有状态应用---K8S_Google工作笔记0033
- k8s核心技术-Pod(两种实现机制)_Pod底层实现机制_共享网络_共享存储_Pause根容器_Pod数据卷---K8S_Google工作笔记0021
- SpringCloud工作笔记038---spring cloud-简单网关权限控制_直接在zuul里面做
- java.net.BindException: Address already in use解决方法
- CHtmlCtrl在VC中的使用