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

摘要:
当一个项目启动两次来测试分布式项目时,它通常需要启动一个项目两次,而不需要多次打开一个项目来启动它。它可以配置一次。1.单击编辑配置2。勾选Allowparallel run 3。依次单击以下两个按钮。条件断点有以下代码,只是希望它停止@Testpublicvoidcondition(){for(int=0;i<30;i++){System.out.println(i);

在这里插入图片描述

一个项目启动两次

测试分布式项目时,经常要一个项目启动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高级调试技巧,用完就是香》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JSON解析CRC算法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

jmeter(18)counter计数器函数和计数器配置元件

一. 计数器函数counter 1、计数器函数每次调用时都会生成一个新数字,从1开始逐渐增加1。计数器可以配置为将每个摸拟用户的值分开,或者为所有用户使用相同的计数器。如果每个用户的值县有单独的增量。则类似于计算测试计划中的迭代次数。全局计数器计算该请求运行的次数。 计数器使用整数变量来保存计数,因此最大值为2,147,483,647。 2、参数 1)第一...

Val简介(来源维基百科)

1.中文版 网址:http://zh.wikipedia.org/wiki/%E5%8F%AF%E5%8F%98%E6%B1%87%E7%BC%96%E8%AF%AD%E8%A8%80 可变汇编语言(Variable Assembly Language,VAL)是一个设计给Unimation Inc.工业机器人用的电脑控制系统及编程语言。VAL机器人语言是会...

MySQL锁定状态查看命令

1 show processlist; SHOW PROCESSLIST显示哪些线程正在运行。您也可以使用mysqladmin processlist语句得到此信息。如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程(也就是,与您正在使用的MySQL账户相关的线程)。如果有线程在update或者insert 某个表,此时进程的stat...

c#实现多线程代码例子

相信大家都有用过网际快车等下载资源的经历,它里面是可以设置线程数的(近年版本默认是10,曾经默认是5)。它会将文件分成与线程数相同的部分,然后每个线程下载自己的那一部分,这样下载效率就有可能提高。相信大家都有加多线程数,提升下载效率的经历。但细心的用户会发现,在带宽一定的情况下,并不是线程越多,速度越快,而是在某一点达到峰值。在C#中用多线程并不难实现。它...

理解杀进程的实现原理

copy from : http://gityuan.com/2016/04/16/kill-signal/ 基于Android 6.0的源码剖析, 分析kill进程的实现原理,以及讲讲系统调用(syscall)过程,涉及源码: /framework/base/core/java/android/os/Process.java /framework/bas...

十、future其他成员函数、shared_future、atomic(原子操作)

一、 1 int mythread(){ 2 cout<<"thread"<<endl; 3 std::chrono::milliseconds dura(5000);//5秒钟 4 std::this_thread::sleep_for(dura);//休息5秒钟 5 return 5;...