调试您的第一个 Python 应用程序
找出问题的根源
还记得在 上一教程中,您已经创建并运行了 汽车 脚本吗? 让我们再多玩一会儿。
运行脚本 ,加速一次,然后通过在 运行 工具窗口中输入相应的命令刹车两次:

现在按 o ,然后按 Enter 以显示汽车的里程表:

脚本告诉我们汽车行驶了 0 公里! 这是一个意外的结果,因为我们已经踩了一次油门,所以汽车应该已经行驶了一段距离。 让我们调试代码,找出原因。
要开始调试,您必须先设置一个 断点。 调试器将在执行带有断点的行之前停止,您将能够检查程序的当前状态。
汽车的里程表设置在第 15 行,所以让我们在那里设置一个断点。 点击边距中的行号:

接下来,点击边距中的 图标,位于
main 子句旁边,然后选择 调试 'car'。

PyCharm 启动调试会话并显示 调试工具窗口。

按 a ,然后按 Enter 以加速汽车。 调试器将执行脚本并在断点处停止。 线程和变量 选项卡将在 调试 工具窗口中打开。 展开 self 以检查变量的当前值:

点击调试器工具栏上的 (步过(O) ),以执行带有断点的行。 请注意,
odometer 的值变为 5,并且第 16 行现在在编辑器中高亮显示,因为它将是下一步要执行的行:

现在点击 (恢复 ),然后切换到 控制台 选项卡,在 调试 工具窗口中。 通过按
b ,然后按 Enter 来指示汽车刹车。 返回到 线程和变量 选项卡并检查变量。 请注意, 速度 此时为 0。

点击 并再次刹车(
b + Enter)。 现在,让我们切换到 线程和变量 选项卡并分析接下来会发生什么:

您可以看到, odometer 的值是 5,而 speed 的值是 -5。 这就是为什么当我们恢复执行时, odometer 将变为 0。 您可以点击工具栏上的 以确保它发生。
因此,意外结果的原因是 speed 变量的负值。
解决问题
为了避免再次遇到相同的问题,让我们更新 brake 的 Car ,以便它不会将 speed 减少到负值。
在 brake 方法中选择语句 self.speed -= 5 ,然后按 Ctrl+Alt+T ():

选择 如果 以为语句添加条件。
PyCharm 创建了一个 if 构造的存根,留给您填写适当的内容。

输入 self.speed >= 5。 我们在代码中指定, brake 方法仅在 speed 大于或等于 5 时扣除 5:

低于 5 的速度怎么办? 当您在现实生活中刹车一辆缓慢行驶的汽车时,它会直接停下。 让我们在代码中指定这一点。
在 brake 方法的最后一行之后添加一行,并开始输入 el...。 PyCharm 提供了插入 else 的选项。 按 Enter 插入它,缩进将自动修复:

现在添加 self.speed = 0 以指定汽车应停止。 以下是 brake 方法的更新代码:
让我们再次 运行以检查我们是否成功修复了问题。 加速汽车,然后刹车两次,并检查里程表:

现在我们得到了预期的正确结果。
详细调试
调试工具窗口由专用的 帧、 变量和 监视窗格组成,以及显示所有输入和输出信息的 控制台选项卡。 如果您希望控制台始终可见,可以将其拖动到 PyCharm 窗口的某个边缘。
单步调试
如果您想逐行查看代码的执行情况,无需在每一行上都设置断点,您可以逐步执行代码。
让我们看看逐步执行示例程序的样子。 通过使用窗口顶部的 运行 小部件启动或重新启动调试器:

在打开的调试器控制台中,按 a 以加速汽车。 调试器将在断点处停止。
我们可以使用 单步调试工具栏按钮选择下一步要停止的行。

例如,点击 步过(O) 按钮 ,查看蓝色标记移动到下一行代码:

继续点击 ,直到到达
action = input("What should I do? [A]ccelerate, [B]rake, " "show [O]dometer, or show average [S]peed?").upper()。
现在,如果您点击 步入(I) 按钮 ,您将看到调试器进入文件 parse.py :

然而,如果您继续使用 ,您会看到您的应用程序直接进入下一个循环:

如果您想专注于自己的代码,请使用 单步进入我的代码 按钮 。 这样,您就可以避免进入库类。
监视
PyCharm 允许您监视任何变量。 只需在 评估表达式或添加监视 字段中输入您想要监视的变量名称,该字段位于 线程和变量 选项卡的工具栏下方。 例如, my_car.time。 请注意,这里支持代码补全。 然后点击字段右侧的 。

接着转到 控制台 选项卡并输入任意命令,例如 b。
当您返回到 线程和变量 选项卡时,您将看到 my_car.time 的当前值:

欲了解更多信息,请参阅 监视。
内联调试
您可能已经注意到另一个 PyCharm 功能,它使您可以轻松查看代码的运行情况: 内联调试器。 只要您按下任意断点,PyCharm 就会直接在编辑器中显示许多变量的值。

此 内联调试功能默认启用。 如果您没有看到内联调试值,请检查调试器设置中是否启用了该功能。 点击调试器工具栏上的 并选择 调试器设置。 确保 在编辑器中显示变量值 已启用。

摘要
那么,您完成了! 恭喜! 让我们回顾一下您在 PyCharm 的帮助下完成的内容:
找出了问题的根源
设置断点
逐步执行了程序
创建了一个监视
评估了一个表达式