阿里资深程序员教你怎么调试教程:Java 返回值、IntelliJ 跳转行等

Java 返回值

从我们刚刚退出的方法中放置返回值非常容易。但是默认情况下它是关闭的。我们可以在 IntelliJ 中启用“显示方法返回值”设置选项,它只是“神奇地”工作。 

这就引出了一个问题:为什么默认关闭这个有用的功能?由于时间不够,我没有在视频中提到这一点。

原因是性能。您检查的元素越多,应用程序的速度就越慢。这意味着 IDE 会将检测绑定到 return 关键字(底层字节码)并在每次命中时收集信息。如果应用程序感觉很慢,请禁用此类检测。如果可能,投资于更新的硬件。特别是更多的内存。另外,请确保我们为 IDE 分配了足够的 RAM!

IntelliJ 跳转到行

那么我怎么知道少于 46,000 个开发人员使用了这个功能呢?

简单。它不是 IDE 的一部分。这是一个需要插件来支持的功能。从安装数量来看,这是一项可以从社区意识中受益的功能。 

安装后,您可以从字面上将当前执行位置拖到不同的位置。请注意对象的状态没有改变,因此您可能需要编辑值以使一切正常。如果您想重新尝试某些内容,这将非常有用。你跨过一个方法,观察一个副作用。然后,您可以将执行拖回并使用不同的属性重新执行。这对于缩小问题范围非常有用。

它对测试也很有用。我们可以一次又一次地尝试具有不同值的方法,然后为此生成用例。我们可以在不重启应用的情况下更好地理解代码覆盖语义。

对象标记

另一个绝对非凡的功能是标记,我只是在“现实世界”中看不到。也许是因为人们只是不明白这意味着什么。标记实际上是对对象的新引用的声明。就像声明一个新的全局变量一样。这是超值的!

开发人员经常跟踪他们在纸上写下他们正在查看的对象的对象 ID(或指针值)的问题。通过对象标记,我们可以给实例一个特定的全局名称。然后我们可以在任何范围之外引用该实例......

例如,当您在调试并希望确保您在方法中查看的对象是将被发送到另一个方法(而不是克隆副本)的对象时。只需用名称标记对象。然后,在另一种方法中,将参数与标记的对象进行比较。 

您可以在条件断点中使用它来在正确的位置停止。这是一个非常有用的功能。

立即返回

我们在调试期间操纵状态时看到的常见问题之一是副作用。因此,该方法可以触发错误并有效地污染整个调试链。这是一种浪费。我们可以“只是”在错误发生之前从某个点强制返回,并提供自定义的返回值。因此,我们可以跳过有问题的代码块。

这是一个非常小众的功能,但是当您需要它时,它很酷!

丢帧

这是我没有时间做的事情。我计划在未来的视频中介绍它。它本质上是操作步骤的“撤消”。堆栈只是被它展开。但它不会恢复状态,因此它不是一个精确的“撤消”操作。

眼尖的读者还会注意到一个名为“Throw Exception”的功能正是这样做的。它对于某些边缘情况很有用,例如验证代码的健壮性和故障行为。我将来也会尝试解决这个问题。

改变状态

与这里的其他功能不同,许多开发人员在调试期间会更改属性的状态。这是大多数开发人员都知道但做得还不够的事情。

我们在调试源代码时需要牢记这一点,并尝试更多地使用它。

概括

控制流和调试中有很多特性。这篇文章几乎没有触及我们可用的东西的表面。 

在调试类时,我们需要了解我们可以使用的所有工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值