截至目前,我发布了the course的前3个视频,并将于明天发布第四部。我计划每周在YouTube上发布两个视频,以最大程度地发挥影响力,但在这里,我每周只写一堂课,以避免过度饱和。我拍摄了大约4个小时的视频内容,但仍未完成八个模块的第二个模块。本课程将非常详细和密集。
我现在在课程平台上工作,取得了良好的进步,并希望尽快发布足够的here。当您阅读本文时,它可能已经活了!
对我来说,课程平台的用户体验令人满意。因此,我尽可能避免DRM。希望人们会尊重这一点,以及我为此所做的努力。我是用Graalvm在Spring Boot 3上构建课程平台的,因此理想情况下它会很苗条,快速和非常简单。我计划在YouTube上托管视频,作为未列出的视频,以提供体面的观看体验。这意味着开发人员可以背叛我的信任并分享未列出的视频。我希望他们不要
我在这里的理由是低顶和出色的表现。我也想在几年内免费获得课程。通过使用YouTube,我可以通过公开视频来免费提供课程。
以下视频讨论了调试中的控制流。这始于基础知识,但可以变得非常深入,从而跳到线,强制返回等。这些工具可以大大改变我们调试代码的方式。
不要忘记查看我的book并订阅YouTube channel以获取未来的视频!
成绩单
欢迎回到大规模调试的第二部分,您可以在其中学习调试的秘密技巧。
在本节中,我们将讨论调试的最基本方面。我们碰到了一个断点。现在什么?
好吧,这是调试者让我们控制流程以调查在受控环境中如何工作的流程。
那么,今天的议程是什么?
我们将讨论逐步进入代码,我希望您的大部分列表对您很熟悉。我们破坏控制流的最后两个项目可能不熟悉。我很确定大多数人都熟悉议程上的最后一项。我怎么知道?请继续关注并找出!
逐步,进,外出
“阶梯”是控制流的最基本形式。我们让行中的代码执行,然后可以在变量窗格中检查结果。这很简单。
在这种情况下,我只是在这里按下了几次按钮,但我也可以按F8获得相同的效果。
接下来,我们将讨论两个不同的操作,即逐步进入和相关的步骤。进入我们调用的方法。请注意,如果没有进入该步骤的方法,将会像阶段一样行事。
我们有两个步进操作。常规的和通常以相同方式行动的力阶。当我们想进入Intellij通常会跳过的API时,我们需要力版。我们可以按F7进入方法。我们可以按Shift f7将阶梯踩入。
当我们完成一种方法而不关心其余方法时,我们可以走出去。这将执行其余方法并返回。请注意,如果我们在返回之前有一个断点,那么在这种情况下,它仍然会停在断点。我们可以在此处按下此按钮出门,或者,我们可以按Shift-f8进行相同的操作。
继续并跑到光标
继续执行项目,直到再次击中断点为止。这也称为简历。这是我们经常使用的简单功能。您可以在此处按“播放”按钮的特殊版本来继续。快捷方式也很有帮助,因为我们经常使用它,它是F9。
运行到光标使我们可以跳过无趣并达到重要的代码的行。我们可以在该线上设置一个断点以获得相同的效果,但是有时更方便,因为它消除了设置和解开断点的需求。我们可以按下此按钮将运行到光标,或者我们可以将Alt-F9用作此功能的快捷方式。
强制返回并抛出例外
此功能称为Intellij/Idea中的力返回。
要查看“力返回”选项,我们在堆栈跟踪上右键单击,并可以看到一组选项。一个更有趣的选择是我很快就会显示的滴框。注意与强制返回相同的投掷异常选项,但它会从该方法中抛出异常。单击此选项后。
我显示了一个对话框,以从该方法输入返回值。这使我可以更改从方法返回的值,当我想调试难以复制错误时,这非常有用。想象一下客户发生故障的情况,但是您可以重现它。在这种情况下,我可以通过返回与方法不同的价值来模拟客户可能经历的内容。
这里值是一个布尔值变量,因此很简单。但是您的代码可能会返回对象,使用此技术您可以用任意值替换该对象。一个很好的例子是null,如果此方法返回null,它会再现我用户正在遇到的问题吗?
类似地抛出异常,使我们可以重现边缘案例,例如由于任意失败而抛出例外。
按OK按OK,我们将以不同的值返回。在这种情况下,我处于方法的边缘,但是我本可以在方法开始时做到这一点,并完全跳过了该方法的执行。这使我们能够模拟方法可能失败的情况,但我们想模拟其行为。如果我们能够重现客户看到的行为,那是有道理的。我们可以使用这样的工具来模拟。
下降框架
下降框架几乎是革命性的,但它也更像是一个整洁的技巧。在这里,我错误地走进了一种方法。糟糕,我不想这样做。我想在踏入掉落的框架之前改变一些东西。我们看到我可以在右键单击菜单中达到它,您也可以单击此处触发它。
下降框架有效地丢弃了堆栈框架。这是一个撤消操作。但这不是那样。它可以撤销我们所介入的方法中发生的状态变化。因此,如果您介入堆栈上的方法和变量已更改,它们将保持更改。
堆栈上的变量是该方法声明或接受为参数的那些变量,这些变量将被重置。但是,如果这些变量之一指向对象,则该对象位于堆中,并且可以通过放松堆栈来重置该对象。
这仍然是一个非常有用的功能,类似于强制返回,但它将返回到当前行而不是下一行。因此,它不会返回一个值。
这比这更好!
跳到线
跳到线是Intellij中的秘密功能。它起作用,但开发人员对此不了解。您需要安装跳转到线路插件以使用它。由于它的安装计数相对较低,我认为人们只是不知道它存在。因为这是必须具有插件。它将改变您调试的方式!
在跳到线路时,我们可以将当前指令指针移至该方法中的其他位置。我们可以将箭头拖动以将执行到新位置。请注意,这两个方向都可以工作,我可以来回移动当前执行。
这不是在两者之间执行代码,它实际上将当前指令移至新位置。太酷了,我必须再次展示它
如果您看到错误,只需将执行拖回并复制它即可。您可以更改可变值并一遍又一遍地复制问题。
我们可以跳过失败的代码,等等。这是壮观的。我不需要重新编译代码。如果您曾经有一个案例,您不小心跨过一条线。那不是我想要的。然后停止调试器并从头开始。这是您的插件。这发生在所有人身上!
我们可以将执行拖回并进行操作。这绝对很棒!
最后
在下一个视频中,我们将简要讨论手表。我们将在该系列的第六次视频中深入研究它。所以请继续关注!
如果您有任何疑问,请使用评论部分。谢谢!