GoLand 2026.3 Help

检查挂起的程序

调试器会话 开始后, Debug工具窗口会出现,程序正常运行,直到发生以下情况之一:

  • 触发了一个 breakpoint

  • 您手动 暂停了程序

之后,程序将被挂起,允许您检查其当前状态、控制其进一步执行并在运行时测试各种场景。

检查帧

程序的状态由 frames表示。 当程序暂停时,当前的帧堆栈将显示在 帧 选项卡中的 调试 工具窗口内。

帧选项卡

帧对应于活动的方法或函数调用。 它存储了被调用方法或函数的局部变量、其参数以及使表达式求值成为可能的代码上下文。

main 函数可以调用其他函数,这些函数还可以继续调用其他函数。 每个活动调用都有一个包含其局部变量和实参的帧。

每次调用 方法 时,都会在栈顶新增一个帧。 当 方法 的执行完成时,相应的帧将从堆栈中移除(最后一个进,最先一个出)。

检查帧有助于了解为什么特定参数会传递给函数或方法,以及调用时调用方的状态。

复制堆栈到剪贴板

  • 要复制所选 goroutine 或线程的调用堆栈,请右键点击 帧 选项卡上的任意位置,然后选择 复制 Stack。

在 goroutine 和线程之间切换

Goroutine 是与其他 goroutine 并发运行的函数。 Go 运行时会在操作系统线程上调度 goroutine。 默认情况下,调试器会列出 goroutine。

  1. 要检查操作系统线程,请点击 显示线程 (线程 ),该按钮位于 帧 工具栏上。

  2. 要返回 goroutine,请点击 显示 goroutine。

当 Delve 报告 goroutine 的启动位置时, 异步堆栈跟踪 部分会显示启动它的 go 语句。 无法在该帧中对表达式求值。

在一个选项卡中连续预览帧

预览选项卡允许您在一个选项卡中连续打开文件。 通过这种方式,您可以避免在编辑器中打开多个文件而导致混乱。

  • 要启用调试期间打开文件的预览模式,请按 Ctrl+Alt+S 打开设置,导航到 编辑器 | 通用 | 编辑器选项卡 并选中 启用预览标签页 复选框。

隐藏对象类型

  • 如果对象类型在 调试 工具窗口中占用了太多空间,请右键点击一个变量并在出现的列表中清除 显示类型 选项。

在转储选项卡中过滤 goroutine 列表

您可以创建程序使用的所有 goroutine 的转储,应用过滤器以搜索特定的 goroutine,并研究过滤后的结果。 此过程可以帮助您更好地理解程序或其部分的工作原理。

以下示例显示 Goroutine 1 main.main 的调用堆栈。 每个条目都会显示 goroutine ID,以及其堆栈中位于 runtime 软件包之外的最后一个函数。

转储 goroutine

  • 在调试会话期间,点击 更多更多 并导航到 转储 goroutine。

    可用 goroutine 及其堆栈的转储会在单独的选项卡中打开。

过滤转储结果

  • 点击 过滤器 图标 (筛选图标)。 在 过滤器 字段中,输入您想要搜索的字符串。

    Goroutine 转储会高亮显示 time 的匹配项。 在输入筛选器文本后,在所选 goroutine 的堆栈中。
  • 右键点击您想从列表中排除的 goroutine,然后选择 隐藏 goroutine。 要隐藏与选定 goroutine 具有相同堆栈的所有 goroutine,请从上下文菜单中选择 隐藏具有相同堆栈的 goroutine。

    您可以在 隐藏 列表下查看隐藏的 goroutine。

    要重置列表状态并使所有隐藏的 goroutine 再次出现在可见列表中,请点击 重置隐藏的 Goroutine 按钮(重置隐藏 Goroutine 按钮)。

将转储结果导出到文本文件

  1. 点击 导出到文本文件 图标 (导出到文本文件图标)。

  2. 在 导出到文件 字段中,选择一个存储路径并点击 保存。

检查/更新变量

线程与变量 选项卡显示所选 帧/线程中的变量列表。 检查变量可以帮助您理解程序为何以某种方式运行。

变量选项卡显示当前执行点可见的变量

每个变量左侧的图标表示其类型。

复制变量

在检查变量时,您可能需要复制变量名称或值以粘贴到其他地方或将其与另一个变量进行 比较。

  • 要复制变量的名称,请右键点击变量并选择 复制名称。

  • 要复制变量所持有的值,请右键点击变量并选择 复制值 Ctrl+C。

与剪贴板比较变量

将变量值与其他值进行比较,请使用 与剪贴板中的值比较 选项。 这很有用,例如,当一个变量包含一个长字符串时,您需要将其与另一个长字符串进行比较。

  1. 将您想要比较的内容复制,例如,从一个文本文件中。

  2. 在 变量 选项卡中,右键点击一个变量并选择 与剪贴板中的值比较。

  3. 查看打开的 差异查看器 中的差异。 如需了解更多关于 差异查看器 的信息,请参阅 比较文件和文件夹。

在专用对话框中查看变量

GoLand 允许您在专用对话框中检查变量。 当您需要跟踪某些变量(或其引用的对象)并同时能够在帧和 goroutine 之间导航时,这非常有用。

  • 右键点击变量或监视并选择 Inspect。

设置变量值

如果您想测试程序在特定数据下的行为或在运行时更改其流程,可以通过更改变量值来实现。

  1. 选择一个变量并按 F2。 或者,从上下文菜单中选择 设置值。

  2. 请输入变量的值然后按 Enter。

您可以从 变量 窗格导航到声明。

  • 要导航到变量声明的代码位置,请右键点击变量并选择 跳转到源 F4。

  • 要导航到变量类型的类型声明,请右键点击变量并选择 跳转到类型源 Shift+F4。

计算表达式

GoLand 允许您在调试会话中评估表达式,以获取有关程序状态的更多详细信息或在运行时测试各种执行场景。

在断点处挂起程序或暂停程序,然后选择包含要使用的变量的 goroutine 和堆栈帧。 表达式会在所选帧中求值。

如果表达式中调用的方法内有断点,它们将被忽略。

在编辑器中评估一个简单表达式

要快速评估表达式,请在编辑器中指向它。 请注意,方法调用无法以这种方式评估。

  1. 指向您要计算的表达式。 表达式的结果显示在工具提示中。

  2. 要查看结果对象的子元素,请点击 “展开”按钮 或按 Ctrl+F1。

如果您觉得数值工具提示干扰到了您的操作,您可以增加延迟时间或完全禁用它们。 为此,请在 设置 对话框(Ctrl+Alt+S )中,转到 生成、执行、部署 | 调试器 | 数据视图 并根据您的偏好设置 显示值提示 和 值工具提示延迟 选项。

在编辑器中评估复杂表达式

如果您想在代码中计算涉及方法调用的表达式或指定表达式的特定部分以进行计算,请使用 对表达式快速求值 选项。

  • 选择表达式并按下 Ctrl+Alt+F8 ,或从浮动工具栏中选择 计算表达式。

  • 或者,转到 运行 | 调试操作 | 快速计算表达式 ,或按住 Alt 并点击所选内容。

您可以配置 对表达式快速求值 使其只在选择一段代码时运行(无需使用菜单/快捷键)。 启用此选项时请谨慎操作,因为您可能会意外调用方法。

选中代码时评估表达式

  • 前往 设置 | 构建、执行、部署 | 调试器 | 数据视图 并设置 在代码选择上显示值提示 选项。

计算任意表达式

可以对 Go 表达式求值,例如 len(items)、 items[0].Name 或 count > 10。 Delve 支持 Go 表达式的一个子集,而不支持包含声明或循环的任意代码块。 有关支持的语法,请参阅 Delve 表达式文档。

如果看到 Cannot evaluate the call: non-top frame is selected ,请选择 goroutine 调用堆栈中的第一个帧,然后再次对表达式求值。

  1. 要评估任意表达式,请在 计算表达式 字段中输入它,然后在 变量 窗格中按 Enter

  2. 结果显示在下面。 您还可以通过点击表达式字段右侧的 来 将表达式添加到 watches。

也可以在单独的对话框中输入表达式:

在专用对话框中评估表达式

  1. 如果您想从当前在您面前的某个表达式或变量开始(例如,在编辑器或 变量 窗格上),请选择它。

  2. 前往 运行 | 调试操作 | 计算表达式 Alt+F8 或从上下文菜单中选择 计算表达式。 快捷键可能在 Ubuntu 上无法使用(为正确操作, 调整快捷键配置)。

  3. 在 计算 对话框中,修改所选表达式或在 表达式 字段中输入一个新的。

  4. 点击 计算。 表达式结果会显示在 结果 字段中。

    如果无法对表达式求值, 结果 字段会显示原因。

计算 对话框是非模态的,因此您可以将焦点切换回编辑器以复制其他变量和表达式。 您还可以打开多个 计算 对话框。

内联查看值

GoLand 在变量使用的旁边显示其值。

一旦变量值更改,内联视图将会更新为新值并更改其颜色。

默认情况下,内联视图是启用的。 要关闭它,请在 设置 对话框(Ctrl+Alt+S )中,转到 生成、执行、部署 | 调试器 | 数据视图 并禁用 内联显示值 选项。

添加内联监视

如果您希望某个表达式的结果显示在特定的行上,您可以为此设置一个内联 watch。 内联监视是持久的,并且在会话重启后仍然保持活动状态。

  1. 点击指向您想跟踪其字段的对象的内联提示。

  2. 在弹出窗口中,选择该字段并点击 添加为内联监视。

  3. 如有需要,微调 watch。 您可以使用任何有效的表达式作为监视。

要删除行内监视,请将鼠标悬停在监视上,然后点击旁边的叉号。

可视化 JSON 和 XML

当您展开 内联值或 计算包含 JSON 或 XML 的字符串表达式时,GoLand 会为您提供数据的结构化和格式化视图。

这使您可以使用编辑器功能,例如 代码折叠和 扩展或缩小选择 ,以便处理子树并在大型对象中方便导航。

使用预览弹出窗口中的选项卡在结构化视图和原始视图之间切换:

监视

如果您想跟踪某个变量或更复杂表达式的结果,请为此变量或表达式设置监视。 当您需要计算未定期显示在变量列表中的内容,或固定某些实例变量以消除每次 单步后展开树的需要时,这非常有用。

在断点处挂起程序或暂停程序,然后选择包含要使用的变量的 goroutine 和堆栈帧。 表达式会在所选帧中求值。

在所选帧的上下文中评估 Watches。 监视在上下文之外或编译失败时无法评估。 如果是这种情况,手表将标有错误图标 错误图标。

默认情况下,监视会与变量一起显示在 变量 窗格中。 要隐藏/显示 监视 窗格,请在 布局设置 恢复布局按钮 菜单中使用 分离 watches 选项。

添加监视

  1. 点击 新建监视 新建监视按钮 位于 变量 选项卡上。

  2. 输入所选帧中可用的变量或表达式,例如 len(items)。 函数调用具有与其他表达式求值相同的 限制和副作用。

在您将一个变量/表达式添加到 监视 之后,它会保留在那里,并在每个 步骤中进行评估,为您提供当前上下文中的结果。

编辑监视

  • 右键点击所需的监视器,然后选择 编辑。

复制监视

  1. 选择您想要复制的监视。

  2. 单击 复制监视 “复制监视”按钮 位于 变量/监视 选项卡上,或按 Ctrl+D。

更改监视的顺序

为了方便起见,您可以更改监视在 变量/监视 窗格中显示的顺序。

  • 使用 变量/监视 窗格上的 上移监视/下移监视 按钮或 Ctrl+Up 和 Ctrl+Down 键盘快捷键。

删除监视

  • 要移除单个监视,请右键点击并选择 移除监视。 或者,在 变量/监视 窗格中选择监视并按 Delete。

  • 要移除所有监视,请右键点击 变量/监视 窗格上的任意位置,然后选择 移除所有监视。

监视允许执行与变量相同的操作。 例如,您可以 在专用对话框中查看它们 ,或使用它们 导航到源代码。

监视是您项目的一部分。 这意味着您可以停止并重新运行调试会话而不会有丢失它们的风险。

暂停和恢复监视

有时,监视可能依赖于本地上下文或涉及大量计算,使其在某些步骤中难以评估。 在这种情况下,您可以暂停监视并按需评估它。

  • 要暂停监视,请右键单击它并选择 暂停监视。

  • 要恢复监视,请右键单击它并选择 恢复监视。

执行点

返回当前执行点

检查程序状态涉及在代码中导航,您经常需要返回到程序挂起的位置。

请执行以下操作之一:

  • 在主菜单中,进入 运行 | 调试操作 | 显示执行点.

  • 按下 Alt+F10。

  • 点击 更多 按钮 ,位于 调试 工具窗口的步进工具栏上,然后从打开的上下文菜单中选择 显示执行点按钮显示执行点。

当前的执行点用蓝色线条表示。 此行代码尚未执行。

2026年 11月 9日