调试

断点是在特定点暂停程序执行的特殊标记。这使您可以检查程序状态和行为。断点可以很简单(例如,在到达某行代码时暂停程序)或涉及更复杂的逻辑(检查附加条件、写入日志消息等)。

一旦设置,断点将保留在您的项目中,直到您明确删除它,临时断点除外)。

断点的类型

PyCharm 中提供了以下类型的断点:

  • 行断点:在到达设置断点的代码行时暂停程序。这种类型的断点可以设置在任何可执行的代码行上。

  • 异常断点Exception:在抛出程序或其子类时暂停程序 。在 PyCharm 中,您可以为 Python 异常设置断点。对于 PyCharm Professional、Django、Jinja2、JavaScript 和 Jupyter 异常断点可用。它们全局应用于异常条件,不需要特定的源代码引用。

设置断点

设置行断点

  • 单击要设置断点的可执行代码行的间距。或者,将插入符号放在该行并按Ctrl+F8

    行断点

设置异常断点

  1. 单击Debug工具窗口左侧的View Breakpoints或按。查看断点按钮Ctrl+Shift+F8

  2. Breakpoints对话框中,按Alt+Insert或单击添加按钮,然后选择Python Exception BreakpointJavaScript Exception Breakpoint

管理断点

删除断点

  • 对于非异常断点:单击装订线中的断点。

  • 对于所有断点:从主菜单中,选择Run | 查看 BreakpointsCtrl+Shift+F8,选择断点,然后单击RemoveDelete

为避免意外删除断点并丢失其参数,您可以选择通过将断点拖动到编辑器或单击鼠标中键来删除断点。为此,请转到设置/首选项 | 构建、执行、部署 | 调试器并选择拖动到编辑器或用鼠标中键单击。单击断点将启用或禁用它。

静音断点

如果您不需要在断点处停止一段时间,您可以将它们静音。这允许您在不离开调试器会话的情况下恢复正常的程序操作。之后,您可以取消静音断点并继续调试。

  • 单击调试工具窗口工具栏中的静音断点按钮。静音断点按钮

启用/禁用断点

删除断点时,其内部配置将丢失。要暂时关闭单个断点而不丢失其参数,您可以禁用它:

  • 对于非异常断点:右键单击它并根据需要设置启用选项。如果没有分配删除断点,您也可以使用鼠标中键切换它们。

  • 对于所有断点:单击查看断点Ctrl+Shift+F8并选中/取消选中列表中的断点。

移动/复制断点

  • 要移动断点,请将其拖到另一行。

  • 要复制断点,请按住断点Ctrl并将其拖动到另一行。这会在目的地创建一个具有相同参数的断点。

配置断点的属性

根据断点类型,您可以配置其他属性,以便根据特定需求定制其操作。最常用的选项可通过intents获得。

  • 要访问断点意图,请将插入符号放在断点所在的行并按Alt+Enter。当您需要快速配置基本断点属性时使用此选项。

  • 要访问完整的属性列表,请右键单击断点并单击更多或按Ctrl+Shift+F8。使用此选项可以鸟瞰所有断点并完全控制其配置。

意向参考

意图

描述

删除断点

删除选定行处的断点。

禁用断点

在选定行禁用断点。

编辑断点

打开一个包含最常用断点属性的对话框。如需更多属性,请单击更多或按Ctrl+Shift+F8

断点的属性

选项

描述

断点类型

启用

清除复选框以暂时禁用断点而不将其从项目中删除。在调试过程中将跳过禁用的断点。

所有类型

暂停

选中该复选框以在遇到断点时暂停程序执行。如果您需要在不中断程序的情况下获取日志信息或计算某个点的表达式,则暂停应用程序很有用。如果您需要创建一个断点,在命中时将触发相关断点,请选择不在该断点处暂停程序。

选择暂停策略:

  • All : 所有线程都将被挂起

  • 线程:只有包含这个断点的才会被挂起。如果您希望将Thread策略用作默认策略,请单击Make default按钮。

所有类型

健康)状况

选择以指定命中断点的条件。条件是 Python 布尔表达式。

此表达式必须在设置断点的行处有效,并且每次命中断点时都会对其进行评估。如果评估结果为True,则执行选定的操作。

您可以输入多行表达式,例如:

如果尝试密码 == os.environ['USER_PASSWORD']: session['logged_in'] = True else: session['logged_in'] = False error = '无效凭据。请再试一次。' 返回会话['logged_in']

Python 行和异常断点

日志

选择是否要将以下事件记录到控制台:

  • “Breakpoint hit” message:当断点被命中时,控制台输出中会显示一条日志消息。

  • 堆栈跟踪:当断点被命中时,它的堆栈跟踪将被打印到控制台。

    如果您想在不中断程序执行的情况下检查导致该点的路径,这将很有用。

Python 行和异常断点

评估和记录

选择在断点被命中时计算表达式,并在控制台输出中显示结果。

Python 行和异常断点

击中后移除

选择在项目被击中后立即从项目中删除断点。

Django 异常、Jinja2 异常和 JavaScript 异常断点

禁用直到断点被命中

选择将触发当前断点的断点。在命中该断点之前,当前断点将被禁用。您还可以选择是否希望再次禁用它或在它被击中后保持启用状态。

所有类型

仅未捕获

选择在遇到未捕获异常的断点时收到通知。

JavaScript 异常断点

激活策略

终止时

选择以在进程因抛出此异常而终止时停止调试器。

Python 异常断点

加薪

选择在抛出此异常时停止调试器。在这种情况下,进程不会终止。

Python 异常断点

忽略库文件

如果在库中引发此异常,则选择是否不希望调试器停止。

Python 异常断点

断点状态

断点可以具有以下状态:

地位

描述

已验证

启动调试器会话后,调试器会检查在技术上是否可以在断点处暂停程序。如果是,调试器将断点标记为已验证

警告

如果在断点处暂停程序在技术上是可行的,但是存在与之相关的问题,则调试器会向您发出警告。例如,当无法在方法的实现之一处暂停程序时,可能会发生这种情况。

无效的

如果在断点处暂停程序在技术上是不可能的,调试器会将其标记为无效。最常见的原因是该行没有可执行代码。

不活跃/依赖

当断点被配置为禁用时,它被标记为非活动/依赖,直到另一个断点被命中,这还没有发生。

静音

所有断点都暂时处于非活动状态,因为它们已被静音

已禁用

此断点暂时处于非活动状态,因为它已被禁用

非暂停

为此断点设置了暂停策略,以便在命中时不会暂停执行。

断点图标

根据它们的类型状态,断点标有以下图标:

线

方法

例外

常规的

行断点

方法断点

异常断点

已禁用

禁用行断点

禁用方法断点

禁用异常断点

已验证

验证行断点

验证方法断点

静音

静音行断点

静音方法断点

不活跃/依赖

非活动/依赖行断点

非活动/依赖方法断点

静音已禁用

静音禁用行断点

静音禁用方法断点

非暂停

非暂停行断点

非挂起方法断点

已验证非暂停

已验证的非挂起行断点

验证的非挂起方法断点

无效的

无效断点

生产力提示

使用断点进行调试打印

使用非暂停日志断点(有时在其他调试器中称为观察点),而不是在代码中插入打印语句。这提供了一种更灵活、更集中的方式来处理调试日志消息。

更快地设置日志记录断点

要设置非暂停日志记录断点,请按住Shift并单击排水沟。这不会暂停程序执行,而是记录一条消息,如 Breakpoint reached: threads.py:28. 如果您想在编辑器中记录您面前的某些表达式,请在按住Shift并单击装订线之前选择它。

添加断点描述

如果您的项目中有许多断点,您可以在断点中添加描述以便于搜索。为此,请右键单击断点对话框中的断点,然后从菜单中Ctrl+Shift+F8选择编辑描述。现在,当您开始键入断点名称时,它会获得焦点。

组断点

您可以将断点组织成组,例如,如果您需要为特定问题标记断点。为此,在Breakpoints对话框Ctrl+Shift+F8中,选择要放置在组中的断点,然后从菜单中选择Move to group 。

跳转到源

要从Breakpoints对话框跳转到设置所选断点的代码行,请按F4

最后修改时间:2022 年 1 月 10 日