正如帕累托定律所说:软件开发占开发时间的20%,调试占80%。
想象一下,如果您减少调试时间并提高调试过程的效率,在代码中找到问题的根本原因或了解算法的工作流程,那么您将变得多么强大。
提升这一关键技能并成为发现“意外功能”又称bug的杰出开发者,将是非常棒的。
调试不只是放置一些断点,让我们费力地让程序击中它们。
How the “Java Debug” Works?
当JVM运行时,可以启动Java Debug会话并通过JDWP协议与JVM通信。
此JDWP(Java调试线协议)描述了调试信息和调试对象与调试器之间的请求的格式。
这里的“调试器”可能是最基本的调试器,即JDB(Java DeBugger),它是一个简单的命令行,提供了用于检查和调试本地或远程JVM的接口。
另外,它可以是IDE调试器,因此您的IntelliJ | Flash Player。 日食| Netbeans调试器是您的IDE的典型代表,它提供了一个GUI,可以通过JVM TI(JVM工具接口)与JVM进行通信,这就是每个IDE调试器彼此都非常不同的原因,即使它们必须实现相同的接口。
因此,正常的调试流程可能如下所示:
- 在发生异常或错误的工作流之前设置断点。之后再设置一个断点,以确保一切正常。忘了中间发生的事情。
让我们从我最喜欢的高级技术开始,设置您的断点为例外! 不是之前,不是之后。
Exception Breakpoints
If you are getting some unchecked exception or an error in runtime, you should put a Java Exception Breakpoint and take a look into the exception code.
启动异常后,您可以查看代码内部以及异常发生之前对象的状态。 您将到达引发异常的确切位置。
Watchpoints
无需执行每个执行步骤并查看变量值如何变化,我们可以在Class的成员上设置一个Watchpoint-该调试点将向我们显示何时访问或修改该成员。
您可以在声明成员的行的左侧装订线区域中单击一下,以设置观察点。
当您知道达到执行点所需的条件时,这将非常有用。 您应该在Breakpoint属性中标记该条件的复选框,并编写一个布尔表达式–当此表达式返回true时,将命中Breakpoint。
Method Breakpoints
这是一个了不起的工具。 不应在方法的第一行以及最后或return语句中放置断点,而应设置方法断点并在方法进入或退出时监视程序的状态。
Watch Expressions
您甚至可能希望查看程序的特定值,但这可以是布尔表达式或代码中一个对象所持有的原始值。
为此,选择您要观看的代码。 在这种情况下,它是resultSet.getString(“ name”)。 这仅仅是因为我想看看州名是如何变化的。
当您没有Class成员设置观察点时,这可以为您提供帮助,因为可以将其视为临时局部变量观察点。
Notes
您可以自定义断点集,以使调试过程更快,更高效。 尝试探索您的IDE,您将掌握它。 即使抛出了运行时异常,您也可以完全控制JVM的执行。
还有其他想法吗? 分享评论!
from: https://dev.to//pedes/debug-like-a-champion