1.错误

程序员有自己的俚语,尽管许多人认为这是技术行话。无论如何,您都无法避免了解它。你需要深入细节。所以让我们开始吧。

您首先要知道的词之一是“ bug ”,即昆虫。在软件开发的上下文中,这个词表示程序中的错误,即程序做错或不太正确的事例。或者只是奇怪地工作。

但是如果一个程序员认为这个程序尽管有奇怪的行为,但确实在做它应该做的事情,那么他或她通常会声明“这不是错误,这是一个特性”。这催生了一堆互联网模因。

一般来说,软件缺陷可能有多种原因:从程序逻辑错误、拼写错误和不正确的程序架构,到编译器中的问题。在任何情况下,程序员都需要修复程序中的真正错误和任何其他“缺点”。

“错误”一词的历史

“bug”这个词的起源最常见的版本是一个传说。

1945 年 9 月,哈佛大学的科学家们正在测试第一台计算机 Mark II。计算机无法正常工作,在检查所有电路板的过程中,他们发现一只飞蛾卡在机电继电器的触点之间。

提取的昆虫被录入技术日志,并附有这样的题词:“第一个实际发现的错误案例。”

这个有趣的故事被认为是使用“错误”一词来表示错误的开始,而“调试”一词已成为消除错误的代名词。


2.调试程序

为了修复程序中的错误,程序员使用称为调试器的特殊程序。其中一些程序甚至知道如何调试机器代码。

Java 程序员使用 IDE 来调试他们的程序。例如 IntelliJ IDEA、Eclipse 和 NetBeans。IntelliJ IDEA 是迄今为止最强大的 IDE,因此我们将以它为例来介绍调试过程。

IntelliJ IDEA 可以以两种模式运行你的程序:

执行模式 工具栏图标 热键
正常执行 Shift+F10
以调试模式启动 Shift+F9

您已经熟悉正常执行:程序启动、运行和退出。但是调试模式为您准备了很多惊喜。

调试模式

调试模式可让您逐步浏览整个程序。或者更准确地说,它可以让您逐行移动。更重要的是,您可以在程序的每一步(每行代码执行后)观察变量的值。你甚至可以改变他们的价值观!

即使是对调试程序有一点了解,你也需要学习三件事:

  • 断点
  • 分步执行
  • 检查变量的值

3.断点

IDE 允许您在代码中放置称为断点的特殊标记。每次以调试模式运行的程序到达标有断点的行时,执行将暂停。

要在特定的行上放置断点,您只需要在 IDEA 中单击该行的左侧即可。例子:

断点 IntelliJ IDEA

该行将标有断点,IntelliJ IDEA 将以红色突出显示它:

标有断点

第二次用鼠标单击代码左侧的窗格将删除断点

也可以简单地Ctrl使用热键组合+将断点放置在当前行上F8在已经有断点的行上再次按Ctrl+将删除它。F8


4.以debug模式启动程序

如果您的程序中至少有一个断点,您可以通过按Shift+F9或单击“错误图标”以调试模式运行该程序。

以调试模式启动后,程序照常运行。但是一旦到达标有断点的代码行,它就会暂停。例子:

以调试模式启动程序

在屏幕截图的上半部分,您会看到带有两个断点的程序代码。程序的执行在第 5 行停止,该行用蓝线标记。第 5 行尚未执行:尚未向控制台输出任何内容。

在屏幕的下半部分,您会看到调试窗格:调试器窗格、控制台 窗格和一组用于调试模式的按钮。

您可以通过按左下方窗格中的恢复程序按钮(或按 )来取消暂停您的程序(即继续执行)F9

以调试模式 3 启动程序

如果按下此按钮(或F9),程序将继续运行,直到遇到下一个断点或结束。这是我们点击按钮后看到的:

以调试模式 4 启动程序

程序停在第二个断点处,在控制台可以看到Helloand字样。and这表明我们只执行了在屏幕上显示输出的三行中的两行。


5.分步执行

如果你的程序运行在调试模式下,你也可以单步执行:一步就是一行。有两个用于逐步执行的热键:F7F8:每个都会导致执行当前代码行。但首先,您仍然必须使用断点来停止您的程序。

如果你想逐行执行你的程序,你需要在方法的开头放置断点main()并以调试模式运行它。

当程序停止时,您可以开始逐行执行它。一F8键执行一行。

这是我们的程序停止后的样子,我们按一下键F8

以调试模式启动程序。 分步执行

main方法第一行已经执行完毕,当前行是第二行。您还可以在屏幕截图的底部看到该词Hello已显示在屏幕上。


6.逐步执行进入方法

如果您在程序中编写了自己的方法,并且希望在调试模式下执行到您的方法内部,即您希望“进入方法”,那么您需要按而F7不是F8

假设您单步执行程序,现在停在第 4 行。如果您按F8,IDEA 将简单地执行第四行并移至第五行。

通过进入方法 2 逐步执行

但是如果你按下F7,IDEA 会进入main2()方法:

一步一步执行进入方法 3

这很简单。如果您真的不关心方法内部会发生什么或如何发生,那么您可以按F8。如果它很重要,则按F7并逐步执行其所有代码。