你不知道的 IDEA Debug调试小技巧(小结)

所属分类: 软件编程 / java 阅读数: 52
收藏 0 赞 0 分享

一、多线程调试断点

Intellij IDEAdebug断点调试是有一个模式的选择的,就像下面这张图,平时我们都使用的是默认的 ALL(在Eclipse中默认是线程模式) ,这种模式我们只能将一个线程断下来,但其他线程却已经执行过了;而将其改为 Thread 后,就可以多个线程都断下来,并且可以很方便的切换线程的执行流程,这就是多线程调试。

debug控制台能够很方便的查看线程的执行状态,也可以很方便的选择某个线程去执行:

二、回退断点

不知道大伙有没有遇到这样一个问题,当我们进行debug时,通常不会进入某个方法一步一步的执行,而是选择性的跳过;当你想要回头观察某个变量的值得变化时,而你刚好没有跟进去,跳过了这个方法,这个时候,变量就被赋值了,我们通常的做法是重来一次。

其实IDEA的调试功能是非常强大的,我们来看看熟悉的调试窗口:

使用红色框框出来的部分,表示当前程序执行到哪一块,哪一部分,你可以尝试用鼠标点点看,你会发现编辑器会跳转到对应的代码中,当然当前断点的位置通常会在列表的第一条。然后我们使用右键单击,你就可以看到如下图所示:

或者你也可以在下图中找到 Drop Frame

在IDEA中,所谓的回退,叫 Drop Frame,选择Drop Frame后,程序会跳转回调用当前这个方法的地方,当然已经改变的值是不会恢复的。但是当该方法再次被调用时,你可以观察到某个变量什么时候被改变,至少我们不用再去重新运行一遍程序。

三、条件断点

条件断点就是当满足某个条件(通常是表达式)时,debug断点才会生效;这在循环中debug是非常有用的;例如我们想要在循环体中调试:当某个变量满足某个条件时,需要断点调试,来查看详细的执行流程及变化情况。

我们说过,IDEA中的debug功能是非常强大的,要使用条件断点也非常简单,下面这张图片中 Condition中的内容代表当nameeamon:23时,程序执行到断点处停下来。

有了条件断点,这样一来,那些不相关和我们不关心的代码就可以直接跳过了。

四、临时断点

所谓临时断点就是只断一次,IDEA默认断点会一致存在。如果你只需要暂停一次,那么使用临时断点会比较方便,因为暂停一次之后断点就自动消失了,不用手动取消。

临时断点可以通过在打断点时按住 Alt 或者 option 键,然后创建断点。也可以通过右键断点处,选择 more 然后在窗口中选中 Remove once hit

五、求值计算

求值计算功能在我们debug过程中,可以很方便的查看程序中所有变量的值,也可以临时修改程序中变量的值,这个功能能在一定程度上辅助我们进行代码调试。

这个功能可以在debug时在debug窗口打开:

打开后是这样的:

然后你就可以在表达式输入框中,输入你想要的操作,比如,查看变量、修改变量(临时的)、调用某个方法等;这些操作结果将会在下方的Result 窗口中输出。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

Java基于反射机制实现全部注解获取的方法示例

这篇文章主要介绍了Java基于反射机制实现全部注解获取的方法,结合实例形式分析了java反射机制获取注解的具体实现方法与操作注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

Java 信号量Semaphore的实现

这篇文章主要介绍了Java 信号量Semaphore的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

eclipse+maven+spring mvc项目基本搭建过程

这篇文章主要介绍了eclipse+maven+spring mvc项目基本搭建过程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Spring boot集成swagger2生成接口文档的全过程

这篇文章主要给大家介绍了关于Spring boot集成swagger2生成接口文档的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

Java冒泡排序法和选择排序法的实现

这篇文章主要介绍了Java冒泡排序法和选择排序法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Spring Cloud Alibaba教程之Sentinel的使用

这篇文章主要介绍了Spring Cloud Alibaba教程之Sentinel的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Josephus环的四种解法(约瑟夫环)基于java详解

这篇文章主要介绍了Josephus环的四种解法(约瑟夫环)基于java详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Java继承Thread类创建线程类示例

这篇文章主要介绍了Java继承Thread类创建线程类,结合实例形式分析了java线程操作相关使用技巧与注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

Java使用Callable和Future创建线程操作示例

这篇文章主要介绍了Java使用Callable和Future创建线程操作,结合实例形式分析了java使用Callable接口和Future类创建线程的相关操作技巧与注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

springBoot使用JdbcTemplate代码实例

这篇文章主要介绍了springBoot使用JdbcTemplate代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多