idea-高级调试技巧

背景

高级调试技巧,其实就是用的比较少。

但是,如果需要使用的时候,还是很方便的。

返回“上一步”

什么时候需要返回上一步?我们调试的时候,就是刚刚执行了某个方法的代码,现在已经进入到了子方法,然后又想要回去看一下变量的值,即回到父方法。

怎么做?点击返回上一步按钮即可。

步骤如下

  1. 先进入到子方法

idea-高级调试技巧_第1张图片

  1. 点击返回父方法按钮

即点击drop frame按钮,就可以返回到父方法(在这里是main方法)。

idea-高级调试技巧_第2张图片

回到了父方法的子方法调用处。

idea-高级调试技巧_第3张图片

然后,我们就可以看父方法的变量了。注意,这里返回父方法,看起来好像和执行完成了子方法返回父方法是一样的,但是其实不是,如果真的是子方法执行完成,出了子方法之后,回到的是父方法调用子方法的下一行代码,而不是子方法调用处,因为子方法已经执行完成了,不能再次执行了。实际上,返回到父方法之后,然后又可以再次继续单步执行到子方法里。

总结,这里的返回上一步,有引号,因为准确的作用是返回父方法的子方法调用处。

for循环,设置条件变量的值

什么时候需要设置for循环变量的值?就是当for循环次数非常多的时候,我们只需要看某个值条件下的内容,这个时候如果手动设置一下变量的值就会很方便,避免不断循环断点调试。

步骤

  1. 第一次,循环变量值是0

idea-高级调试技巧_第4张图片

  1. 现在,我们需要直接跳到循环变量值等于50的情况

idea-高级调试技巧_第5张图片

右键红色断点,然后输入循环变量的值。

然后,继续执行下一次循环,就可以看到循环变量的值现在是50。

idea-高级调试技巧_第6张图片

可以看到,控制台打印的,第一次是0,第二次是50。

idea-高级调试技巧_第7张图片

多线程

如果是多线程程序,我们调试的时候,当前执行到哪个线程,完全是随机的——这样的话,就不方便调试,因为我们很可能只想调试某个线程的代码。

怎么做?简单一点的方法是,可以直接在想要调试的线程打断点,然后直接执行到该断点。

另外一种方法是,步骤如下:

  1. 修改线程挂起模式

idea-高级调试技巧_第8张图片

可以把每个线程的断点,都切换到单个线程模式。

idea-高级调试技巧_第9张图片

  1. 执行程序,可以看到所有线程

idea-高级调试技巧_第10张图片

  1. 如果想要执行线程2,就可以选择线程2,直接调试线程2的代码

idea-高级调试技巧_第11张图片

选择执行到线程2了。

使用这种方法的好处是,如果我们想调试多个子线程,并且按我们自己想要的顺序来调试,那么就可以用这种方法,因为我们直接选择哪个子线程,就会执行到哪个子线程,而不是乱序的。


方法1和方法2的区别和比较

方法1,看不到所有线程,只能看到当前子线程1和主线程,所以不能选择自己想要执行的子线程2。

idea-高级调试技巧_第12张图片

方法2,可以挂起所有单个子线程,然后选择自己需要执行的子线程即可,这样就可以完全按照自己需要的顺序去调试多线程程序。

计算表达式

步骤

  1. 点击计算表达式按钮

idea-高级调试技巧_第13张图片

  1. 输入当前变量的计算表达式,获取计算结果 idea-高级调试技巧_第14张图片

修改变量的值

步骤

1、一开始变量的值是1

idea-高级调试技巧_第15张图片

2、修改变量的值
右键变量——》set value

idea-高级调试技巧_第16张图片

修改完成之后是10

idea-高级调试技巧_第17张图片

打印的也是10

idea-高级调试技巧_第18张图片

参考

https://blog.csdn.net/QinTao9...

最好的IDEA debug长文?看完我佛了
https://mp.weixin.qq.com/s/uO...

你可能感兴趣的