h5跳一跳源码无法本地运行_看源码,我为什么推荐IDEA?

本文介绍了IDEA的高效调试技巧,包括条件断点用于精准定位代码执行,强制返回值便于测试不同分支,模拟异常以检验代码可靠性,Evaluate Expression功能用于查看和修改变量值,以及避免toString()调用陷阱。这些技巧能大幅提升源码阅读和调试的效率。
摘要由CSDN通过智能技术生成

自从抛弃eclipse之后就一直在用IDEA,其强大功能让源码的调试过程无比顺畅。

从此,透心凉,心飞扬。

1.条件断点

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

比如下文这个

@Test

public void testList() throws Exception {

List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10);

for (Integer integer : list) {

System.out.println(integer);

}

}

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

71422f53aadfa757a66c8fb64e327a1c.png

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

2.强制返回值

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

a97c546c82ec8e7fa79a5c1be79cf486.png

3.模拟异常

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

b7d24228f0f0ae67262bfac265cbff3e.png

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

4.Evaluate Expression

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

ed4d65dd90434f9f89e0687855332d1b.png

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

4cae5e022d7e7c0a4c95d74fb3dd753c.png

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

5.toString的坑(重点)

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

c5cfa2a9ba95a3ad0b45eb07f60ba4ac.png

db71788dcf89f8628b34b637b604a322.png

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

7184fc11867f3141faddc4ea4d40b77a.png

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

你那边还有什么技巧,欢迎在留言进行分享。

556c87f670098c187c359c8e31d89a2b.png

分享一份蛮不错的《Java核心知识点整理.pdf》,覆盖了JVM、锁、高并发、反射、Spring原理、微服务、Zookeeper、数据库、数据结构等等。

获取方式:关注公众号并回复 666 领取,更多内容陆续奉上,敬请期待。

 近期热文:

  • 关于烂代码优化重构的几点经验

  • 什么才是好代码、高质量代码?

  • 这些让人抓狂的烂代码,你碰到几种?

  • 超全的 Linux 性能诊断分析工具

  • 高并发的核心技术 - 幂等的实现方案

9334d8d33b924673824727dc283cd262.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值