这几个IDEA高级调试技巧,用完就是香

一个项目启动两次
测试分布式项目时,经常要一个项目启动2次,不用将一个项目打开多次启动,配置一下即可
1.点击Edit Configurations

2.勾选Allow parallel run

3.依次点击如下2个按钮

条件断点
有如下代码,只想让它在i == 10的情况下停下来
@Test
public void condition() {
for (int i = 0; i < 30; i++) {
System.out.println(i);
}
}
1.鼠标左键在行数上加上断点
2.在断点上右键加上条件
3.点击Done按钮

此时断点上会有问号,表示这是一个条件断点,右键点击即可查看条件
多线程调试
当有多个线程时,我们如何控制线程的执行顺序呢?
@Test
public void thread() {
new Thread(() -> {
System.out.println("我是线程1-1");
System.out.println("我是线程1-2");
System.out.println("我是线程1-3");
}, "线程1").start();
new Thread(() -> {
System.out.println("我是线程2-1");
System.out.println("我是线程2-2");
System.out.println("我是线程2-3");
}, "线程2").start();
System.out.println("主线程");
}
例如让线程1和2依次执行如下代码
System.out.println("我是线程1-1");
System.out.println("我是线程2-1");
System.out.println("我是线程1-2");
System.out.println("我是线程2-2");
普通模式debug模式下是做不到的,因为我们没办法控制线程的执行顺序。需要做如下设置
1.右键点击断点,选中Thread(Make Default表示把当前选中的Thread设置为默认值)

设置后的断点如下,3个断点都是Thread模式

执行到某个语句想切换线程的时候选中下一步要执行的线程即可
临时执行表达式/修改变量值
代码如下
public class User {
private String username;
private Integer age;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
@Test
public void changeValue() {
User user = new User();
user.setUsername("aa");
System.out.println(user.getUsername() + " " + user.getAge());
}
在输出语句上加上断点

在断点处执行了
user.setAge(10);
最后的输出结果为
aa 10
我们也可以直接右键选中Set Value修改username属性等

回退

当断点执行到method2()时,想回退到method1时,点击如下按钮即可

需要注意的是,断点回退只能重新走一下流程,某些改变了的数据是无法回退到之前的状态,如对象、集合等等
欢迎关注
关注回复 pdf目录 有惊喜,海量视频资源访问 www.erlie.cc

参考博客
[1]https://www.cnblogs.com/jun1019/p/9741224.html
[2]https://www.cnblogs.com/chiangchou/p/idea-debug.html
这几个IDEA高级调试技巧,用完就是香的更多相关文章
- idea 高级调试技巧
两年前写过一篇关于idea的高级用法,今天再来一篇关于调试方面的技巧讲解: 一.条件断点 循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值. 参考上图,在断点的位置,右 ...
- Visual Studio高级调试技巧
1. 设置软件断点,运行到目标位置启动调试器 方法①:使用汇编指令(注:x64 c++不支持嵌入汇编) _asm 方法②:编译器提供的方法 __debugbreak(); 方法③:使用windows ...
- 你可能不知道的IDEA高级调试技巧
一.条件断点 循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值. 参考上图,在断点的位置,右击断点旁边的小红点,会出来一个界面,在Condition这里填入断点条件即可 ...
- 很多.net 程序员不知道又非常重要的 .net高级调试技巧.调试别人的dll方法内的变量
事情是这样的, 最近需要开发Orcale的数据库. 于是使用了EF 加上 Oracle.ManagedDataAccess.Client 这个Oracle.ManagedDataAccess 很好用, ...
- JS高级调试技巧:捕获和分析 JavaScript Error详解
前端工程师都知道 JavaScript 有基本的异常处理能力.我们可以 throw new Error(),浏览器也会在我们调用 API 出错时抛出异常.但估计绝大多数前端工程师都没考虑过收集这些异常 ...
- Android Studio 实用调试技巧
Android Studio 是个发工具,其自身带调式环境是很强大的,我们要摆脱只会使用Log打印日志的低效的方法,掌握高级调试技巧对每个Android开发者都是很必要的,废话少说,直入正题 调试方式 ...
- 一探前端开发中的JS调试技巧
前言 调试技巧,在任何一项技术研发中都可谓是必不可少的技能.掌握各种调试技巧,必定能在工作中起到事半功倍的效果.譬如,快速定位问题.降低故障概率.帮助分析逻辑错误等等.而在互联网前端开发越来越重要的今 ...
- Linux c c++ 开发调试技巧
看到一篇介绍 linux c/c++ 开发调试技巧的文章,感觉挺使用,哪来和大家分享. 通向 UNIX 天堂的 10 个阶梯Author: Arpan Sen, 高级技术人员, Systems Doc ...
- 网页调试技巧:抓取马上跳转的页面POST信息或者页面内容
http://www.qs5.org/Post/625.html 网页调试技巧:抓取马上跳转的页面POST信息或者页面内容 2016/02/02 | 心得分享 | 0 Replies 有时候调试网页或 ...
随机推荐
- Equal Cut
Equal Cut 题目描述 Snuke has an integer sequence A of length N. He will make three cuts in A and divide ...
- NLP-文本分类之开始(0)
转眼读研一年了,开题也开了,方向也定了,大方向就是NLP,然而从一开始的上课.做项目开题什么的(自己也比较贪玩,以前不打游戏,结果王者上瘾了),到现在对NLP是一知半解,不对,半解都没有半解,然后时间 ...
- Getting Started with STM32 in Segger Embedded Studio
初识Segger Embedded Studio(SES) 第一次见SES是在“安富莱电子论坛”上,“硬汉”提到SES的一些特性,再加上Jlink的大名,于是试试他们家的IDE. SES貌似也是基于E ...
- [LC] 1002. Find Common Characters
Given an array A of strings made only from lowercase letters, return a list of all characters that s ...
- CString转换成std::string
unicode的编码格式: CString strCS; std::string strSTD = CT2A(strCS.GetBuffer()); 其他的编码格式: CString strCS; ...
- jquery框架概览(一)
参照jQuery 2.0.3版本(http://files.cnblogs.com/files/snoy/jquery-2.0.3.js")来进行的源码分析 从代码的最外层可以看到是一个II ...
- [LC] 165. Compare Version Numbers
Compare two version numbers version1 and version2.If version1 > version2 return 1; if version1 &l ...
- http、https的压测工具——apacheab 、webbench
http的压测工具 搞清楚不同的安装方法,执行文件.配置文件的路径. yum安装: 执行文件在/usr/bin 下,一般为执行文件 配置文件在/etc目录下 conf文件 源码安装: 执行文件在安装文 ...
- pycharm全局搜索快捷键无反应
原因:和搜狗输入法的快捷键冲突
- haproxy笔记之四:配置文件中的关键字参考
3.1 balance balance <algorithm> [ <arguments> ]balance url_param <param> [check_po ...