《idea 骚操作》
提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!!
《idea 骚操作》
1. Debug
1.1 Java 8 stream流调试
自从 Java 8 开始,作为程序员的我们都离不开 Stream 相关功能的使用。但总是有一些时候,我们对 stream 的操作所要的结果和预期不符,这就需要我们逐步调试,定位问题。
在对应stream流代码位置,打上断点
点击debug方式运行,点击trace current stresm chain按钮可以追踪stream流数据的流转过程!
当运行到第二个断点时,trace current stresm chain按钮为黑色,点击无效,此时我们可以用表达式方式进行调试, 具体表达式大家可根据实际情况书写!
1.2 字段debug调试
有些时候,我们查看源码时,类中的某个字段的值到底是在哪里改变的,你要一点点追踪调用栈,逐步排查,稍不留神,就可能有遗漏
我们可以在 IntelliJ IDEA 中为某个字段添加断点,当字段值有修改时,自动跳到相应方法位置
- 在字段定义处鼠标左键添加断点(会出现「眼睛」的图标)
- 在「眼睛」图标上鼠标右键
- 在弹框中勾选上 Field access 和 Field modification 两个选项
点击debug方式运行, 代码停顿在字段断点位置,点击放行按钮,代码进入到修改字段的位置,如下图所示:
1.3. idea debug处即兴抛异常
在测试一个事务方法的回滚是否生效时,我们就需要在代码里加一个异常,这种方式两个缺点就是:一你可能会忘记删除该异常代码(别不信),二是麻不麻烦?
在debug时走到断点处右键Frames下面的代码行,然后选择 Throw Exception
然后会弹出一个小窗口,在里面写上自己的异常就OK了:
1.4 idea debug加筛选条件运行
比如有一个很大的for循环,比如我们要看当i=1000时的情况,如果要一步一步的点,得点一千次,那么你就可以通过右击左侧断点,然后写上你的条件即可
写完条件done之后,下一次断点就会直接运行到i=1000的时候暂停。
同样,我们只看偶数的时候,可能直接通过i%2==0的条件放在里面
1.5 idea debug断点回退
人嘛,有时候总会手贱一下,比如我本来想在第一个断点就暂停查看的,结果手一抖点快了,直接跑到第二个方法了,这时咱们就能用到回退功能了。
在下图中的Frames里选中处右键,先择drop frame(我的idea版本是Reset Frame):
drop之后会发现当前栈信息被丢弃, 控制台信息恢复到上级方法栈 , 此时断点被回退
1.6 远程debug调试
1.6.1 服务器端
在启动jar包时加入jvm参数
以下是不同版本jdk加的参数
- JDK 9+:-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8882
- JDK 5-8:-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8882
- JDK 4:-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8882
- JDK 3-:-Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8882
1.6.2 本地idea配置
按照如下方式配置
1.6.3 开始调试
启动远程服务器上的服务
点击idea上的debug按钮开始调试
将断点打到要调试的位置, 请求服务器上的服务, 即可在本地代码断点处进行调试
2. 列编辑
2.1 对齐列编辑
按住alt键, 鼠标左键下拉会进入列编辑模式, 然后结合ctrl shift 等键组合, 即可实现列的跳转, 选中等操作(这里不做具体组合键的整理, 因为windows和mac操作略有区别, 大家可以自行百度)
2.2 对非对齐列编辑
针对一组可搜索的且不是对齐的字符串进行列编辑
在当前页面查询出需要进行列编辑的字符串, 点击选择Select All Occurrences 按钮进行列编辑