IDEA-Stram调试
前言
JAVA8的lambda的stream编程,给我们带来了很流畅(牛逼)的编程体验,但带来的问题也很明显:
下面粘贴一张博猪一个日常的代码片段:
上面代码看着很简洁(zhaungbi),但是带来的问题也很直接:
- 方法可读性不好
- 调试困难,无法知道流程周转
下面博猪给大家介绍一个博猪日常写stream时常用的一个神器:==Stream-Trance==,一个IDEA自带的调试神器,这个工具可以详细看到每一步操作的关系、结果,非常方便进行调试。
Stream调试
下面通过一个Demo,让博猪给你演示一下神器是如何使用的。首先给大家贴一下没有注释的代码(很装逼的代码)。
1 | |
下面博猪贴一下有注释的代码,顺便理一下这一块的代码的流程:
1 | |
上面这段代码算是流程比较长的了,当然实际工作中可能遇到比这个还要复杂的,那博猪演示一下日常是怎么调试Stream流程的。
- 在Stream那行打上断点。点击debug运行。

- 点击下方按钮

然后自动进入当前
Stream 跟踪调试窗口,默认Split 模式显示,上面会展示每个链式调用的选项卡,点击各个选项卡可以看对应每步的跟踪结果。如下面所示:- 初始流

- 过滤

- 排序

- 转map

- 去重

- 结果

还可以点击
Flat Mode,查看完整的流程的运转

链式调试
上方详细介绍了一下Stream的调试,但是平时也是使用一些Lambda的链式编程,那上述方法是否支持呢?
比如下方代码:
1 | |
OK,我们按照上方进行调试,调试图如下方所示:

可惜, Trace Current Stream Chain 按钮是灰色状态,不能进入,因为那个按钮只能被 Stream 调试所用。
那像这种非 Stream 链式调用怎么调试呢?
断点进入后,可以选中需要调试的部分链式代码片断,然后右键选中 Evaluate Expression 菜单(ALT + F8)进入表达式计算窗口,点击 Evaluate 按钮开始计算:


计算无误,该表达式还可以自由编辑,非常强大。虽然没有像 Stream 这样专属的调试面板,使用 Evaluate Expression 也能达到调试链式调用的目的
