PhpStorm 2021.3 Help

断点

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

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

断点的类型

PhpStorm 中提供以下类型的断点:

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

  • 方法断点:在进入或退出指定方法或其实现之一时暂停程序,允许您检查方法的进入/退出条件。

  • 异常断点Exception:在抛出程序或其子类时暂停程序 。它们全局应用于异常条件,不需要特定的源代码引用。

设置断点

设置行断点

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

    行断点

设置方法断点

  • 单击声明方法的行处的装订线。或者,将插入符号放在该行并按Ctrl+F8

    方法断点命中

    或者,执行以下操作:

    1. Ctrl+Shift+F8或选择运行 | 从主菜单查看断点。

    2. 在打开的Breakpoints对话框中,按下Alt+Insert或单击添加按钮,然后选择PHP Method Breakpoints

    3. Add Method Breakpoint对话框中,指定要为其添加断点的类和方法或普通函数。

设置异常断点

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

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

    创建异常断点
  3. 在“添加异常断点”对话框中,从库或项目中指定异常类。

有关详细信息,请参阅使用 PHP 异常断点进行调试

已解决的断点

当使用 Xdebug 时,PhpStorm 可以使用它的断点解析机制。在这种机制下,调试器评估 PHP 是否可以为当前行生成内部可执行字节码。如果没有为一行生成这样的代码,则无法命中相应的断点。Xdebug 将扫描最多 5 个后续行,并在可执行代码所在的行停止。Xdebug 2.8 及更高版本支持解析断点。

在下面的示例中,第 4 行不能找到任何可执行代码。断点被解析到第 5 行,调试会话相应暂停。

在编辑器中解决断点

解决断点后,PhpStorm 会显示相应的通知。

已解决的断点通知

如有必要,您可以在PHP |上的 PhpStorm 中配置断点解析支持。设置/首选项对话框的调试页面( Ctrl+Alt+S):

  • Xdebug区域中,使用Resolve breakpoint if it is not available on the current line (Xdebug 2.8+)复选框来切换断点解析。请注意,如果禁用解析,则在没有可执行代码的代码行上设置的断点将始终被忽略。

  • Advanced settings区域中,使用Notify if breakpoint was resolved to a different line (Xdebug 2.8+)复选框来选择 PhpStorm 是否应该在断点被解析时显示通知消息。

管理断点

删除断点

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

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

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

静音断点

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

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

启用/禁用断点

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

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

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

移动/复制断点

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

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

配置断点的属性

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

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

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

意向参考

意图

描述

删除断点

删除选定行处的断点。

禁用断点

在选定行禁用断点。

编辑断点

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

断点的属性

启用

清除复选框以暂时禁用断点而不将其从项目中删除。在单步执行期间会跳过禁用的断点。

您可以将 PhpStorm 配置为在单击时启用/禁用断点,而不是完全删除它们。为此,请转到设置/首选项 | 构建、执行、部署 | 调试器并将Remove breakpoint选项设置为Drag to the editor 或单击鼠标中键

暂停

指定当断点被命中时是否暂停程序执行。

当您需要在不暂停程序的情况下记录某些表达式时(例如,当您需要知道一个方法被调用了多少次时)或者您需要创建一个断点以在命中时启用相关断点时,非挂起断点很有用.

健康)状况

此选项用于指定每次命中断点时检查的条件。条件是一个 PHP 布尔表达式,例如计算为trueor 。如果条件评估为,则执行选定的操作。否则,断点将被忽略。false$someID == 'foo'true

表达式的结果取自 return 语句。当没有 return 语句时,结果取自代码的最后一行。

在评估表达式时,请确保您了解它们可能产生的副作用,因为它们可能会影响程序的行为和/或结果。

日志记录选项

命中断点时,可以将以下内容记录到控制台:

  • “断点命中”消息:类似的日志消息Breakpoint reached: LineBreakpoint.php:10

  • 堆栈跟踪:当前帧的堆栈跟踪。如果您想在不中断程序执行的情况下检查导致该点的路径,这将很有用。

  • 评估和记录:任意表达式的结果,例如,'Initializing'users->size ()

    表达式的结果取自 return 语句。当没有 return 语句时,结果取自代码的最后一行,甚至不必是表达式:文字也可以。这可用于生成自定义消息或在程序执行时跟踪某些值。

    在评估表达式时,请确保您了解它们可能产生的副作用,因为它们可能会影响程序的行为和/或结果。

击中后移除

指定断点被击中一次后是否应从项目中删除。

禁用直到遇到以下断点

当在Disable until hit the following breakpoint框中选择断点时,它将作为当前断点的触发器。这将禁用当前断点,直到指定的断点被命中。

您还可以选择是在发生这种情况后再次禁用它还是保持启用状态。

当您只需要在某些条件下或某些操作后暂停程序时,此选项很有用。在这种情况下,触发断点通常不需要停止程序执行,而是设置为non-suspending

断点状态

断点可以具有以下状态:

状态

描述

已验证

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

警告

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

无效的

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

不活跃/依赖

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

静音

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

已禁用

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

非暂停

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

断点图标

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

线

方法

例外

常规的

行断点

方法断点

异常断点

已禁用

禁用行断点

禁用方法断点

禁用异常断点

已验证

验证行断点

验证方法断点

静音

静音行断点

静音方法断点

不活跃/依赖

非活动/依赖行断点

非活动/依赖方法断点

静音已禁用

静音禁用行断点

静音禁用方法断点

非暂停

非暂停行断点

非挂起方法断点

已验证非暂停

已验证的非挂起行断点

验证的非挂起方法断点

无效的

无效断点

生产力提示

使用断点进行调试打印

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

更快地设置日志记录断点

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

添加断点描述

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

组断点

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

跳转到源

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

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