JAVA8 debug 技巧
调试按钮说明
Stream 调试
实例代码:
|
|
在 stram() 处设置断点,debug 运行。
可以看到Debug视图中 Trace Current Steam Chain 图标会点亮。
点击该图标弹出 Stream Trace 视图。可以看到 filter、sorted、collect 每一个方法执行之后的结果。
ok,成功。
Optional 调试
实例代码:
|
|
在 Optaionl 处加断点,debug 运行,可以看到 Evaluate Express 图标。
点击该图标弹出 Evaluate 视图,输入需要调试的代码,点击右下角 Evaluate 图标,可以看到执行结果。
注:Optaionl 不像 Stream 那样,有专门的调试器,他需要借助 Evaluate Express 视图完成调试。
条件断点
实例代码:
|
|
有时候在循环中调试时,我们希望只关心我们需要关心的那个对象,但是一次循环记录有很多,每一个都跟一遍很是麻烦,那么条件断点就可以上场了。
在需要的地方加断点,在断点上右键弹出条件断点视图,输入条件表达式,点击 Done。
然后 debug 运行, 只有当 x 的值为 5 的时候才会停住,进入断点。
多线程调试
实例代码:
|
|
线程的执行时间是有系统分配,开发人员无法控制,但是通过Idea 专用的线程调试功能可以很好的选择要执行的线程代码,达到调试代码的目的。
先在线程内设置断点,在断点上右键选择 Thread 类型。
然后 debug 运行项目,在 Debug 的 Frames 视图可以方便的选择要执行的线程,选择后可继续一步步调试代码。
方法回退
实例代码:
|
|
通过工具栏里的按钮可回退到上一步。
通过选中方法右键选择 Drop Frame 可回退到指定的方法。
如:阅读Spring IOC 启动流程源码时,方法调用都很深,想退回来再看看上一步做了啥,用方法回退很方便。
但是对于修改了共享数据的方法,如果回退再执行一次,可能产生异常数据。
强制返回
Debug 调试代码时,跟到一个无关痛痒的方法,有时候我们希望提前返回,可以使用下面的方法强制返回一个指定的值。
选择方法右键,选择Fore Return。
会弹出一个窗口,输入要返回的值即可。
热修改变量的值
有时候,在Debug 的过程中我们想调整一个参数的值又不想重启项目,可以使用Idea提供的实时修改变量值的功能。
首先在 Variables 视图选要修改的变量,右键选择Set Value。
输入要修改的内容,回车可进行热修改。