断点
断点是特殊标记,可在指定位置暂停程序执行。 这使您可以检查程序状态和行为。 断点可以很简单,例如在到达某一代码行时暂停程序,或包含更复杂的逻辑,例如根据 其他条件进行检查、 写入日志等。

设置后,除 临时断点外,断点会保留在您的项目中,直到您显式将其移除。
断点类型
WebStorm 中支持以下类型的断点:
行断点 :在程序执行到设置断点的代码行时暂停程序。 此类断点可以设置在任何可执行的代码行上。
异常断点 :在指定的 JavaScript 异常被抛出时暂停程序。 与堆栈跟踪不同,在异常位置暂停应用程序可使您在上下文和数据仍可用时进行检查。

设置断点
设置行断点
单击目标可执行代码行的行号栏以设置断点。 或者,将光标移动到该行并按下 Ctrl+F8。
要设置临时行断点,请按 Ctrl+Alt+Shift+F8。 或者,按住 Alt 并单击行号栏。 该断点在被命中后将从项目中移除。
对于箭头函数,您可以在一行中设置多个断点。 单击行号栏时,WebStorm 会显示可设置断点的位置提示。 单击相关提示。

设置异常断点
按 Ctrl+Shift+F8 或从主菜单中选择 。
在 断点 对话框中,按 Alt+Insert 或单击
,然后选择 JavaScript 异常断点。

在 添加异常断点 对话框中,指定来自某个库或项目中的异常类。

如需让调试器在每次抛出异常时都停止,请选中 任意异常 复选框。

管理断点
移除断点
对于非异常断点:在边距中单击该断点。
对于所有断点:在主菜单中转到 Ctrl+Shift+F8 ,选择该断点,然后单击 移除 或按 Delete。
为避免意外删除断点及其参数,您可以选择通过将断点拖动到编辑器中或单击中键的方式移除断点。 为此,请转到 并选择 拖动到编辑器或使用中键点击。 此时单击断点会 启用或禁用该断点。
静音断点
如果您暂时不需要在断点处停止,您可以 静音这些断点。 这使您可以在不离开调试器会话的情况下恢复程序的正常运行。 之后,您可以取消断点静音并继续调试。
在 调试 工具窗口的工具栏中单击 静音断点 按钮
。
启用/禁用断点
当您移除断点时,其 内部配置将丢失。 如需在不丢失参数的情况下临时关闭某个断点,可以 禁用它:
对于非异常断点:右键单击并按需设置 已启用 选项。 或者,按住 Alt 的同时点击断点,或使用鼠标中键点击断点也可实现此操作。 对于鼠标中键,请确保未将删除断点的操作 分配给它。
对于所有断点:单击 运行|查看断点 Ctrl+Shift+F8 并在列表中选中或取消选中该断点。
移动/复制断点
如需移动断点,请将其拖动到其他行。
如需复制断点,请按住 Ctrl 并将断点拖动到另一行。 这将在目标位置创建一个具有相同参数的断点。
查看所有设置的断点
您可以在 书签工具窗口中查看所有断点的列表。 当您在代码中添加断点时,它们会自动添加到该工具窗口的专用列表中。
在主菜单中,前往 或按 Alt+2 并展开 断点 列表。

分组断点
您可以将断点组织到一组中,例如在处理特定问题时对断点进行标记。
在 断点 对话框 Ctrl+Shift+F8 中,选择要添加到组中的断点,然后从菜单中选择 。
配置断点属性
根据断点类型,您可以配置其他属性,以便根据特定需求调整其行为。 最常用选项可通过 意图操作访问。
基本断点属性可通过意图操作访问。 将插入符号置于包含断点的行,然后按 Alt+Enter:

如需访问完整属性列表,请右键单击断点然后单击 更多 ,或按 Ctrl+Shift+F8。

意图操作参考
断点属性参考
本章节提供有关断点可用功能的信息。
已启用
清除复选框可暂时禁用断点而不将其从项目中移除。 禁用的断点在 单步执行时会被跳过。
您可以配置 WebStorm 为单击以启用/禁用断点,而不是将其移除。 为此,请转到 并将 移除断点 选项设置为 拖动到编辑器中或使用鼠标中键点击。
挂起
指定在断点命中时是否暂停程序执行。
非暂停断点适用于记录某些表达式但不暂停程序的场景(例如,查看某方法被调用的次数),或创建一个命中后启用 相关断点的 触发断点。
条件
选中此复选框,以仅在满足特定条件时让调试器在断点处停止。 通过 JavaScript 布尔表达式定义条件,该表达式需计算为 true 或 false ,例如 fruit == "grapes"。 该表达式必须在您设置断点的行上有效。
您可以输入多行表达式,例如:
可选地,指定当满足条件且调试器在断点处停止时,您希望 WebStorm 执行的操作,详见下文 日志。

当调试器执行到包含条件断点的行时,将计算指定的布尔表达式。 如果表达式计算结果为 true ,程序将被挂起。

如果在 日志 区域选择了任何 日志记录操作 ,则 控制台 选项卡将显示相应的消息:

表达式的结果取自 return 语句。 当没有 return 语句时,结果取自代码的最后一行。
在求值表达式时,请确保注意其可能的副作用,因为这些副作用可能会影响程序的行为和结果。
日志选项
命中断点时,可以将以下内容记录到控制台:
“断点命中”消息(M) :类似
已在 ocean.Whale.main(Whale.java:5) 处命中断点的日志消息。堆栈跟踪(K) :当前帧的堆栈跟踪信息。 如果您想要查看导致当前状态的执行路径而不中断程序执行,则此操作非常有用。
求值并记录(E) :任意表达式的结果,例如
"Initializing"或users.size()。表达式的结果取自 return 语句。 当没有 return 语句时,结果取自代码的最后一行,该行不一定必须是表达式:文本字面量同样有效。 这可以用于生成自定义消息或在程序执行过程中跟踪某些值。
在求值表达式时,请确保注意其可能的副作用,因为这些副作用可能会影响程序的行为和结果。
设置日志断点
(可选)如果您希望记录的表达式在编辑器中已展开, 请选中该表达式。
按住 Shift 并单击标尺区域。
命中后移除
指定是否在断点被命中一次后将其从项目中移除。
断点状态
断点可能具有以下状态:
状态 | 说明 |
|---|---|
已验证 | 启动调试器会话后,调试器会检查是否可以在技术上在断点位置挂起程序。 如果可以,调试器会将断点标记为 已验证。 |
警告 | 如果在技术上可以在断点位置挂起程序,但存在相关问题,则调试器会将断点状态设置为 警告。 例如,在某些方法的实现中无法挂起程序时,可能会出现此情况。 |
无效 | 如果在技术上无法在断点位置挂起程序,调试器会将其标记为 无效。 这通常是因为该行上没有可执行代码。 |
非活动/依赖 | 当断点被 配置为在其他断点被命中之前保持禁用状态 ,且此条件尚未满足时,该断点将被标记为非活动/依赖状态。 |
已静音 | 所有断点暂时都处于非活动状态,因为它们已被 静音。 |
已禁用 | 此断点暂时处于非活动状态,因为它已被 禁用。 |
不挂起 | 此断点已设置 挂起策略为不在命中时挂起程序执行。 |
断点图标
行 | 异常 | |
|---|---|---|
常规 | ||
已禁用 | ||
已验证 | ||
已静音 | ||
非活动/依赖 | ||
静音禁用 | ||
不挂起 | ||
已验证不挂起 |
效率提示
- 使用断点进行 "printf" 调试
请使用 不挂起 日志断点(在其他调试器中有时也称为监视点)来代替在代码中插入 print 语句。 这提供了一种更灵活且更集中式的方式来处理调试日志消息。
- 更快速地设置日志断点
要设置 不挂起 日志断点,请按住 Shift 并单击标尺区域。 这不会挂起程序执行,而是会记录一个类似
已在 ocean.Whale.main(Whale.java:5) 处命中断点的消息。 如果您希望记录显示在编辑器中的某个表达式,请在按住 Shift 并单击标尺区域之前选中它。- 添加断点描述
如果项目中有许多断点,您可以为断点添加描述以方便查找。 为此,请在 断点 对话框中右键单击一个断点,按下 Ctrl+Shift+F8 并从菜单中选择 编辑描述。 现在,当您开始输入断点名称时,该断点将获取焦点。
- 跳转至源码
要从 断点 对话框跳转至设置所选断点的代码行,请按 F4。
