一个项目启动两次

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

1.点击Edit Configurations



2.勾选Allow parallel run



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

条件断点

有如下代码,只想让它在i == 10的情况下停下来

  1. @Test
  2. public void condition() {
  3. for (int i = 0; i < 30; i++) {
  4. System.out.println(i);
  5. }
  6. }

1.鼠标左键在行数上加上断点

2.在断点上右键加上条件

3.点击Done按钮



此时断点上会有问号,表示这是一个条件断点,右键点击即可查看条件

多线程调试

当有多个线程时,我们如何控制线程的执行顺序呢?

  1. @Test
  2. public void thread() {
  3. new Thread(() -> {
  4. System.out.println("我是线程1-1");
  5. System.out.println("我是线程1-2");
  6. System.out.println("我是线程1-3");
  7. }, "线程1").start();
  8. new Thread(() -> {
  9. System.out.println("我是线程2-1");
  10. System.out.println("我是线程2-2");
  11. System.out.println("我是线程2-3");
  12. }, "线程2").start();
  13. System.out.println("主线程");
  14. }

例如让线程1和2依次执行如下代码

  1. System.out.println("我是线程1-1");
  2. System.out.println("我是线程2-1");
  3. System.out.println("我是线程1-2");
  4. System.out.println("我是线程2-2");

普通模式debug模式下是做不到的,因为我们没办法控制线程的执行顺序。需要做如下设置

1.右键点击断点,选中Thread(Make Default表示把当前选中的Thread设置为默认值)



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



执行到某个语句想切换线程的时候选中下一步要执行的线程即可

临时执行表达式/修改变量值

代码如下

  1. public class User {
  2. private String username;
  3. private Integer age;
  4. public String getUsername() {
  5. return username;
  6. }
  7. public void setUsername(String username) {
  8. this.username = username;
  9. }
  10. public Integer getAge() {
  11. return age;
  12. }
  13. public void setAge(Integer age) {
  14. this.age = age;
  15. }
  16. }
  17. @Test
  18. public void changeValue() {
  19. User user = new User();
  20. user.setUsername("aa");
  21. System.out.println(user.getUsername() + " " + user.getAge());
  22. }

在输出语句上加上断点



在断点处执行了

  1. user.setAge(10);

最后的输出结果为

  1. 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高级调试技巧,用完就是香的更多相关文章

  1. idea 高级调试技巧

    两年前写过一篇关于idea的高级用法,今天再来一篇关于调试方面的技巧讲解: 一.条件断点 循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值. 参考上图,在断点的位置,右 ...

  2. Visual Studio高级调试技巧

    1. 设置软件断点,运行到目标位置启动调试器 方法①:使用汇编指令(注:x64 c++不支持嵌入汇编) _asm 方法②:编译器提供的方法 __debugbreak(); 方法③:使用windows ...

  3. 你可能不知道的IDEA高级调试技巧

    一.条件断点 循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值. 参考上图,在断点的位置,右击断点旁边的小红点,会出来一个界面,在Condition这里填入断点条件即可 ...

  4. 很多.net 程序员不知道又非常重要的 .net高级调试技巧.调试别人的dll方法内的变量

    事情是这样的, 最近需要开发Orcale的数据库. 于是使用了EF 加上 Oracle.ManagedDataAccess.Client 这个Oracle.ManagedDataAccess 很好用, ...

  5. JS高级调试技巧:捕获和分析 JavaScript Error详解

    前端工程师都知道 JavaScript 有基本的异常处理能力.我们可以 throw new Error(),浏览器也会在我们调用 API 出错时抛出异常.但估计绝大多数前端工程师都没考虑过收集这些异常 ...

  6. Android Studio 实用调试技巧

    Android Studio 是个发工具,其自身带调式环境是很强大的,我们要摆脱只会使用Log打印日志的低效的方法,掌握高级调试技巧对每个Android开发者都是很必要的,废话少说,直入正题 调试方式 ...

  7. 一探前端开发中的JS调试技巧

    前言 调试技巧,在任何一项技术研发中都可谓是必不可少的技能.掌握各种调试技巧,必定能在工作中起到事半功倍的效果.譬如,快速定位问题.降低故障概率.帮助分析逻辑错误等等.而在互联网前端开发越来越重要的今 ...

  8. Linux c c++ 开发调试技巧

    看到一篇介绍 linux c/c++ 开发调试技巧的文章,感觉挺使用,哪来和大家分享. 通向 UNIX 天堂的 10 个阶梯Author: Arpan Sen, 高级技术人员, Systems Doc ...

  9. 网页调试技巧:抓取马上跳转的页面POST信息或者页面内容

    http://www.qs5.org/Post/625.html 网页调试技巧:抓取马上跳转的页面POST信息或者页面内容 2016/02/02 | 心得分享 | 0 Replies 有时候调试网页或 ...

随机推荐

  1. 如何在linux中运行sql文件

    1.在linux中进入sql命令行 mysql -u root -p   输入密码 2.假设home下面有a.sql文件 先得use databasename,要不会报错 “No Database S ...

  2. [JSOI2019]节日庆典(Z-algorithm)

    要想让一个位置作为最小循环,其必须是最小后缀,然后一个字符串的最小后缀不超过O(logn)个,于是维护备选集合即可. 然而要在O(n)复杂度求解,需要求出原串后缀与原串的LCP长度,需要用Z-algo ...

  3. GSON解译Json为DTO

    除了用okhttp网络库外,还用到google的gson库. 1. uti类的对象一般都用懒汉模式.这次gson也是用懒汉模式. public class GsonTools { private st ...

  4. springboot FreeMarker template error

    注释掉<#list>xxx</#list> 现在运行就不报错了

  5. PAT甲级——1033 To Fill or Not to Fill

    1033 To Fill or Not to Fill With highways available, driving a car from Hangzhou to any other city i ...

  6. Mysql 和 Java对比异同

    1.求两个时间的差(天数) mysql : to_days 距离公元0年的天数 select TO_DAYS('2017-10-18 00:00:00'),TO_DAYS(NOW()), (TO_DA ...

  7. [LC] 259. 3Sum Smaller

    Given an array of n integers nums and a target, find the number of index triplets i, j, k with 0 < ...

  8. confidence intervals and precision|The One-Mean z-Interval Procedure|When to Use the One-Mean z-Interval Procedure

    Confidence Intervals for One Population Mean When σ Is Known Obtaining Confidence Intervals for a Po ...

  9. Tarjan相关

    先码住: 板子:http://www.cnblogs.com/luckycode/p/5255656.html 求割点/割边:http://www.cnblogs.com/c1299401227/p/ ...

  10. spring:事务的5大隔离级别,7大传播行为

    一.五大隔离级别 ISOLATION_READ_UNCOMMITTED:读未提交 ISOLATION_READ_COMMITTED:读已提交 ISOLATION_REPEATABLE_READ:可重复 ...