看源码,我为什么推荐IDEA?

news/2024/7/6 5:17:43

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次跳过.我们来看一下条件断点的使用

 

看源码,我为什么推荐IDEA?

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

2.强制返回值

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

看源码,我为什么推荐IDEA?

 3.模拟异常

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

 

看源码,我为什么推荐IDEA?

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

4.Evaluate Expression

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

 

看源码,我为什么推荐IDEA?

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

看源码,我为什么推荐IDEA?

 

 

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

5.toString的坑(重点)

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

 

看源码,我为什么推荐IDEA?

 

看源码,我为什么推荐IDEA?

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

看源码,我为什么推荐IDEA?

 

 

所以这个idea的默认设置.建议在一定条件下还是关闭

转载于:https://www.cnblogs.com/CQqf2019/p/10953729.html


http://www.niftyadmin.cn/n/3459255.html

相关文章

SQLServer中SYSCOLUMNS表的各个字段的意义

列名 数据类型 描述 name sysname 列名或过程参数的名称。 id int 该列所属的表对象 ID&#xff0c;或与该参数关联的存储过程 ID。 xtype tinyint systypes 中的物理存储类型。 typestat tinyint 仅限内部使用。 xusertype smallint 扩展的用户定义…

C++线程编程-设计基于锁的并发数据结构

序列化 多个线程轮流存取互斥元保护的数据&#xff0c;它们必须线性的而非并发的存取数据。 高并发就意味着&#xff1a;更小的保护区域&#xff0c;更少的序列化&#xff0c;更高的并发潜能。 设计基于锁的并发数据结构关键是要确保存取数据时要锁住正确的互斥元&#xff0c…

SQLServer常用系统存储过程

sp_add_log_file_recover_suspect_lib 当数据库的复原不能完成时,向文件组增加一个日志文件sp_add_targetservergroup 增家指定的服务器组sp_add_targetsvrgrp_member 在指定的目标服务器组增加一个目标服务器sp_addapprole 在数据库里增加一个特殊的应用程…

深入理解Java中的底层阻塞原理及实现

Information Technology Solutions as a Presentation 谈到阻塞&#xff0c;相信大家都不会陌生了。阻塞的应用场景真的多得不要不要的&#xff0c;比如 生产-消费模式&#xff0c;限流统计等等。什么 ArrayBlockingQueue、 LinkedBlockingQueue、DelayQueue 等等&#xff0c;都…

sqlserver 所有系统和用户定义错误消息

下面的示例将查询 sys.messages 目录视图以返回具有英文文本 (1033) 的数据库引擎中所有系统和用户定义错误消息的列表。 language_id1033 英文 language_id1041 日文 language_id2052 中文简体 language_id1028 中文繁体 SELECTmessage_id,language_id,severity,is_event_log…

DDD学习笔记 - 领域、子域和限界上下文

在设计欠佳的软件里&#xff0c;子域和限界上下文(context)很难存在一对一的映射关系。-- 说明设计较好的&#xff0c;子域和限界上下文应该是一对一的映射关系。 在不同的模型中存在名字相同或者相近的对象&#xff0c;但是它们的意思缺不同。当模型被一个显示的边界所包围时&…

C++线程编程-设计无锁的并发数据结构

定义和结果 使用互斥元、条件变量以及future 来同步数据的算法和数据结构被称为阻塞的算法和数据结构.调用库函数的应用会中断一个线程的执行&#xff0c;直到另一个线程执行一个动作.这种库函数调用被称为阻塞调用&#xff0c;因为直到阻塞被释放时线程才能继续执行下去.通常…

你人再好有屁用?(火了)

你人再好&#xff0c;不是每个人都会喜欢你。有人羡慕你&#xff0c;也有人讨厌你&#xff0c;有人嫉妒你&#xff0c;也有人看不起你。生活就是这样&#xff0c;你所做的一切不能让每个人都满意&#xff0c;不要为了讨好别人而丢失自己的本性&#xff0c;因为每个人都有原则和…