PhpStorm 2025.2 Help

断点

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

一旦设置了断点,除非明确移除,否则它将一直保留在您的项目中, 临时断点除外。

断点类型

在 PhpStorm 中有以下类型的断点:

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

  • Method breakpoints :程序在进入或退出指定方法或其实现之一时暂停,使您可以检查方法的进入/退出条件。

  • 异常断点 :当抛出 异常 或其子类时暂停程序。 它们在任何情况下都适用,不需要特定的源代码引用。

设置断点

设置行断点

  • 点击可执行代码行的装订区域,设置断点。 或者,将文本光标放在行上并按下 Ctrl+F8

    行断点

设置方法断点

  • 点击方法声明行的装订区域。 或者,将文本光标置于方法声明处并按 Ctrl+F8

    方法断点命中

    或者,执行以下操作:

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

    2. 在打开的 断点 对话框中,按 Alt+Insert 或单击 "添加"按钮 ,并选择 PHP 方法断点

    3. 添加方法断点 对话框中,指定类和方法,或普通函数以添加断点。

设置异常断点

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

  2. 断点 对话框中,按 Alt+Insert 或单击 "添加"按钮 ,并选择 PHP 异常断点JavaScript 异常断点

    创建异常断点
  3. 添加异常断点 对话框中,指定异常类。

有关更多信息,请参见 使用 PHP 异常断点进行调试

已解析的断点

使用 Xdebug(2.8 及更高版本)时,PhpStorm 使用其 断点解析机制。 在此机制下,调试器会评估 PHP 是否可以为当前行生成内部可执行字节码。 如果断点所指的行上没有这样的代码,则相应的断点无法命中。 Xdebug 将扫描最多 5 行后续代码,停在有可执行代码的行,并将断点定义更新为该行。

在以下示例中,断点设置在第 4 行,该行不包含任何可执行代码:

编辑器中的已解析断点

当您运行调试会话时,PhpStorm 将断点移动到第 5 行(该行已解析),暂停会话,并显示相应的通知。

带通知的已解析断点

禁用已解析断点

如果您不希望 PhpStorm 在调试会话期间解析和移动断点,可以在 PHP | 调试 页面的 设置 对话框(Ctrl+Alt+S )中禁用此功能。

Xdebug 区域:

  • 取消选中 如果断点在当前行不可用,则解析断点(Xdebug 2.8+) 复选框以禁用整个断点解析功能。 请注意,如果禁用了解析,则设置在没有可执行代码的代码行上的断点将始终被忽略。

  • 取消选中 如果断点位置与源代码不同,则移动断点到解析位置 复选框以仅禁用断点位置自动调整到 Xdebug 实际停止的行。 请注意,断点解析功能仍将启用。

设置 区域,取消选中 在断点解析到不同的行时通知(Xdebug 2.8+) 复选框以关闭 PhpStorm 每次解析断点时的通知。

    返回值调试断点

    在 Xdebug 3.2 及更高版本中,PhpStorm 支持 Xdebug 的 返回值调试功能。 这是一个额外的调试步骤,用于检查函数返回值,这些值会立即返回而不存储在中间变量中。

    运行 Xdebug 返回值调试

    要在 PhpStorm 中运行 Xdebug 返回值调试:

    1. 在返回语句行设置 行断点

    2. 启动 PHP 调试会话。 调试器将在函数中的最后一条语句处暂停执行。

    3. 单击调试工具栏上的 单步进入F7)。

      额外的变量现在可以在 变量 选项卡的 Debug 工具窗口中 监视

      运行返回值调试

      禁用 Xdebug 返回值调试

      在 PhpStorm 中,返回值调试默认启用。 要禁用它,请执行以下任一操作:

      • Debug 工具窗口中,打开 设置 菜单并取消选择 启用函数返回值调试 选项。

        禁用返回值调试
      • PHP | 调试 页面的 设置 对话框中(Ctrl+Alt+S ),取消选择 启用返回函数值调试(Xdebug 3.2+) 复选框,位于 Xdebug 区域。

        管理断点

        移除断点

        • 对于非异常断点:点击装订区域的断点。

        • 对于所有断点:转到主菜单中的 运行 | 查看断点 Ctrl+Shift+F8 ,选择断点,然后点击 移除 或按下 Delete

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

        静音断点

        如果您暂时不需要在断点处暂停,可以将其 静音。 这使您能够在不离开调试器会话的情况下恢复正常程序操作。 之后,您可以取消静音断点并继续调试。

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

        启用/禁用断点

        当您移除断点时,其 内部配置会丢失。 若要在不丢失断点参数的情况下暂时关闭单个断点,您可以 disable 它:

        • 对于非异常断点:右键点击并根据需要设置 已启用 选项。 或者,您可以按住 Alt 的同时点击断点,或使用鼠标中键点击断点来完成此操作。 对于鼠标中键,请检查是否未将移除断点 分配给它

        • 对所有断点:点击 运行 | 查看断点 Ctrl+Shift+F8 ,然后在列表中选中/取消选中断点。

        移动 / 复制断点

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

        • 要复制断点,请按住 Ctrl 并将断点拖到另一行。 这将在目标位置创建具有相同参数的断点。

        查看所有设置的断点

        您可以在 书签 工具窗口中查看所有断点的列表。 当您在代码中设置断点后,断点会自动添加到工具窗口中的专用列表中。

        • 在主菜单中,转到 """ 视图 | 工具窗口 | 书签 """ 或按 Alt+2 ,并展开 断点 列表。

        书签工具窗口

        分组断点

        您可以将断点组织到组中,例如,如果您需要标记出针对特定问题的断点。

        • 断点 对话框 Ctrl+Shift+F8 中,选择您想要放置在组中的断点,然后从菜单中选择 移动到组

        配置断点的属性

        根据断点类型,您可以配置附加属性,从而使其操作符合特定需求。 最常用的选项通过 意图可用。

        • 要访问断点意图,请将文本光标放在有断点的行上,然后按 Alt+Enter。 在需要快速配置基本断点属性时,请使用此选项。

          断点意图
        • 要访问完整的属性列表,请右键点击断点并点击 更多 或按 Ctrl+Shift+F8

        意图参考

        意图

        描述

        移除断点

        移除所选行的断点。

        禁用断点

        禁用 选定行的断点。

        编辑断点

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

        断点属性参考

        在本章中,您可以找到有关断点功能的信息。

        已启用

        取消选中此复选框以暂时禁用断点,而不将其从项目中移除。 禁用的断点将在单步执行期间被 跳过

        您可以配置 PhpStorm 以通过点击启用/禁用断点,而不是完全移除它们。 要执行此操作,请转到 设置 | 构建、执行、部署 | 调试器 并将 移除断点 选项设置为 拖动到编辑器中或使用鼠标中键点击

        挂起

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

        非挂起断点在您需要记录某个表达式而不暂停程序时非常有用(例如,当您需要知道方法被调用的次数时)或在您需要创建一个 触发断点以在触发时启用 依赖断点

        条件

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

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

        在评估表达式时,请确保您意识到它们可能产生的副作用,因为这些副作用可能会影响程序的行为和结果。

        日志选项

        当断点被触发时,可将以下内容记录到控制台:

        • “断点命中”消息(M) :一条类似 Breakpoint reached: LineBreakpoint.php:10 的日志消息。

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

        • 求值并记录(E) :任意表达式的结果,例如, 'Initializing'users->size ()

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

          在评估表达式时,请确保您意识到它们可能产生的副作用,因为这些副作用可能会影响程序的行为和结果。

        设置日志断点

        1. (可选)如果您想要记录的表达式在编辑器中显示在您面前,请选择它。

        2. 按住 Shift 并点击边栏。

        命中后移除

        指定断点在被命中一次后是否应从项目中移除。

        禁用直到命中以下断点

        当在 禁用直到命中以下断点 框中选择断点时,它会作为当前断点的触发器。 这 禁用当前断点,直到指定断点被触发。

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

        此选项在您只需要在特定条件下或执行某些操作后挂起程序时很有用。 在这种情况下,触发断点通常不需要停止程序执行,并被设置为 非暂停状态

        断点状态

        断点可能具有以下状态:

        状态

        描述

        已验证

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

        警告

        如果技术上可以在断点处暂停程序,但存在相关问题,调试器会将断点状态设置为 warning。 例如,当无法在某个方法的某个实现处暂停程序时,可能会发生这种情况。

        无效

        如果在断点处技术上无法暂停程序,调试器会将其标记为 无效。 这经常发生是因为该行没有可执行代码。

        非活动/依赖

        当断点 配置为在另一个断点被触发前禁用时,它会被标记为非活动/依赖状态,并且此事件尚未发生。

        静音

        所有断点都已暂时失效,因为它们已被 静音

        已禁用

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

        非挂起

        此断点的 挂起策略设置为命中时不挂起执行。

        断点图标

        根据它们的 类型状态 ,中断点会被标记以下图标:

        折线图

        方法

        异常

        常规

        行断点

        方法断点

        异常断点

        已禁用

        禁用行断点

        禁用的方法断点

        禁用异常断点

        已验证

        已验证行断点

        验证方法断点

        静音

        静音行断点

        静音方法断点

        非活动/依赖

        不活跃/从属行断点

        非活跃/依赖的方法断点

        静音已禁用

        已禁用的行断点

        静音 禁用 方法 断点

        非挂起

        非挂起行断点

        非挂起方法断点

        已验证的非挂起

        已验证的非挂起行断点

        已验证的非挂起方法断点

        无效

        无效断点

        提高效率的提示

        使用断点进行调试打印

        请使用 非中断 日志断点(在其他调试器中有时称为监视点)代替在您的代码中插入打印语句。 这提供了一种更灵活且集中的方式来处理调试日志消息。

        更快速地设置日志断点

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

        添加断点描述

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

        跳转到源

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

        最后修改日期: 2025年 9月 26日