IDEA看源码的几个小技巧

本文公众号来源:肥朝 本文作者:肥朝 Get到了几个在IDEA下看源码/Debug小技巧,之前一直没注意到这些小技巧,感觉还是很有用的,分享一下。

1.条件断点

看源码的时候,经常遇到这个情况,源码中有个for循环,关键是这个list的size有时候长达数百个.但是我们只想debug一种情况.肥朝就曾经见过,在for循环中打了断点,一直按跳过,按了数十下之后.才找到自己想debug的值.这样效率不高

比如下文这个

1@Test
2public void testList() throws Exception {
3    List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
4    for (Integer integer : list) {
5        System.out.println(integer);
6    }
7}

如果你想debug数字10这种情况,如果你不知道条件断点,那么你可能要一直点9次跳过.我们来看一下条件断点的使用

这样,就只有满足条件的时候才会进入断点了,告别无效的小手一抖!

2.强制返回值

比如SpringBoot中这个打印Banner的.我们想调试多种情况.就可以利用这个Force Return,这样方便我们调试源码中的多种分支流程

3.模拟异常

在做业务开发中,我们有时需要模拟某个方法抛出异常,看看自己的代码是不是像肥朝一样可靠得一逼.但是你每次去写死一个异常,然后再删掉,这种低效的方式有违极客精神.那么我们如果让一个方法抛出异常呢?

不过要注意的一点是,这个功能印象中是IDEA 2018年以后的版本才有的功能.

4.Evaluate Expression

比如我们看源码时遇到这个一个场景,这里有一个byte[],但是我们就想看一下这个的值到底是啥.

那么我们可以这么操作一波

这个功能的使用场景非常的广,通过这个功能,可以在看源码时,给某个变量赋我们要想的值,从而改变代码的分支走向等等.总之,这个是肥朝看源码中,使用频率最高的功能之一.更多场景,等待老司机们自己调教!

5.toString的坑(重点)

相信看过Dubbo源码的朋友都会遇到过这个一个坑.也就是你把断点打在下面图示的第一个箭头的时候,是无法进入init()方法的.但是你把断点打在第二个箭头也就是init()方法的时候,是能进入的.曾经也有不少人问过这个问题.

当然除了这个坑之外,也有类似的坑,如下

本文分享自微信公众号 - Java3y(java3y)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程创造城市

python中利用API文档开发与学习

实际上在早期的linux类型的系统中早就自带Python这个编译器,我们可以直接使用,但是这些编译器大多是2.x版本的。

10720
来自专栏媒矿工厂

大规模直播流的实时评测

本文是来自VES(Video Engineering Summit)2019的演讲,作者是来自于videoRx公司的CTO,Robert Reinhardt。本...

10520
来自专栏一个会写诗的程序员的博客

《Kotlin Contract 契约》极简教程

我们都知道Kotlin中有个非常nice的功能就是类型智能推导(官方称为smart cast), 不知道小伙伴们在使用Kotlin开发的过程中有没有遇到过这样的...

28120
来自专栏理想二旬不止

第二阶段-Java面向对象:【第六章 包】

9020
来自专栏算法工程师之路

每日算法题:Day 8

思路: 第一种思路,使用一个堆栈去保存所有的节点,然后再进行依次弹出后并连接起来即可!

7820
来自专栏泰斗贤若如

Could not find resource——mybatis 找不到映射器xml文件

今天用IDEA写Mybatis的时候,测试报了如图所示的错,恶心死我了,后来解决了,总结一下,防止下回跳坑,当然,也是做一个分享,如果有朋友遇到这个错,希望有所...

70620
来自专栏木溪知识加油站

从Eclipse项目迁徙至AndroidStudio

安卓已经烂大街多年了,开发工具也从Eclipse一路火花带闪电的到了Android Studio。都说用过AS你就回不去以往Eclipse的纯真年代了,事实证明...

8820
来自专栏理想二旬不止

第五阶段-IO基础:【第一章 异常】

try 后面的一对大括号内的内容即受到监控的程序,也就是说这一段代码是可能存在异常的,而Catch中由开发者,根据自身推断可能存在的异常,书写对应异常类型以及处...

7930
来自专栏硬核项目经理的专栏

PHP设计模式之适配器模式

这个模式一直以来都有一个很经典的例子,那就是插座!没错,当我们从国外买回来电器,或者旅游出差去国外的时候,经常会需要一个电源适配器,因为我国的电压标准是220伏...

17020
来自专栏理想二旬不止

第三阶段-Java常见对象:【第四章 StringBuilder、StringBuffer类】

--------------------------------------------------------------------------------...

10040

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励