检查挂起的程序
调试器会话 开始后, Debug工具窗口会出现,程序正常运行,直到发生以下情况之一:
触发了一个 breakpoint
您手动 暂停了程序
之后,程序将被挂起,允许您检查其当前状态、控制其进一步执行并在运行时测试各种场景。
检查帧
程序的状态由 frames表示。 当程序被挂起时,当前帧堆栈显示在 帧 窗格中。

帧对应于一个活动的方法调用。 它存储被调用方法的局部变量、其参数以及支持表达式计算的代码上下文。
每次调用 方法 时,都会在栈顶新增一个帧。 当 方法 的执行完成时,相应的帧将从堆栈中移除(最后一个进,最先一个出)。
检查帧可以帮助您理解为什么特定参数被传递给方法,以及调用者在调用时的状态。
默认情况下,RubyMine 会隐藏对应框架和库调用的帧。
显示来自库的帧
要显示隐藏的框架,请按右上角的 显示所有框架 切换按钮
,该按钮位于 帧 面板中。

隐藏库中的帧
如果您的程序使用了外部库,并且您想省略在库类中进行的调用,请单击 在库中隐藏帧 按钮
,该按钮位于 帧 窗格的右上部分。
复制堆栈到剪贴板
要复制当前线程的调用堆栈,请右键单击 帧 窗格中的任意位置,然后选择 复制堆栈。
检查/更新变量
变量 窗格显示所选 帧/线程中的变量列表。 检查变量可以帮助您理解程序为何以某种方式运行。

固定字段
如果一个对象有很多字段,您可以将其中一些字段固定,这样它们总是显示在列表的顶部。 此优先级将适用于相应类的所有实例。
在 变量 窗格中,点击表示变量类型的图标。

当某个字段被固定时,蓝色旗帜 将替换原来的图标。 若要取消固定该字段,请点击此标志。
复制变量
在检查变量时,您可能需要复制变量名称或值以粘贴到其他地方或将其与另一个变量进行 比较。
要复制变量的名称,请右键点击变量并选择 复制名称。
要复制变量所持有的值,请右键点击变量并选择 复制值 Ctrl+C。
与剪贴板比较变量
将变量值与其他值进行比较,请使用 与剪贴板比较值 选项。 这很有用,例如,当一个变量包含一个长字符串时,您需要将其与另一个长字符串进行比较。
将您想要比较的内容复制,例如,从一个文本文件中。
在 变量 窗格中,右键单击一个变量并选择 与剪贴板比较值。
查看打开的 差异查看器 中的差异。 如需了解更多关于 差异查看器 的信息,请参阅 比较文件和文件夹。
在专用对话框中查看变量
RubyMine 允许您在专用对话框中检查变量。 这在您需要跟踪某个变量(或它所持有引用的对象)并且同时能够在帧和线程之间导航时非常有用。
右键点击变量或监视并选择 Inspect。

设置变量值
如果您想测试程序在特定数据下的行为或在运行时更改其流程,可以通过更改变量值来实现。
选择一个变量并按 F2。 或者,从上下文菜单中选择 设置值。

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

instance="rm"/>
导航到源代码
您可以从 变量 窗格导航到声明。
要导航到变量声明的代码位置,请右键点击变量并选择 跳转到源 F4。
要导航到变量类型的类声明,请右键点击该变量,然后选择 跳转到类型源 Shift+F4。
计算表达式
RubyMine 允许您在调试会话中评估表达式,以获取有关程序状态的更多详细信息或在运行时测试各种执行场景。
此功能仅在程序在触发断点后挂起时有效(而非 暂停)。
如果表达式中调用的方法内有断点,它们将被忽略。
在编辑器中评估一个简单表达式
要快速评估表达式,请在编辑器中指向它。 请注意,方法调用无法以这种方式评估。
指向您要计算的表达式。 表达式的结果显示在工具提示中。

要查看结果对象的子元素,请单击
或按 Ctrl+F1。

如果您觉得数值工具提示干扰到了您的操作,您可以增加延迟时间或完全禁用它们。 为此,请在 设置 对话框(Ctrl+Alt+S )中,转到 并根据您的偏好设置 显示值提示 和 值工具提示延迟 选项。
在编辑器中评估复杂表达式
如果您想在代码中计算涉及方法调用的表达式或指定表达式的特定部分以进行计算,请使用 快速求值表达式 选项。
选择表达式并按 Ctrl+Alt+F8 ,或从显示的浮动工具栏中选择 计算表达式。

或者,转到 ,或按住 Alt 并单击选择内容。
您可以配置 快速求值表达式 使其只在选择一段代码时运行(无需使用菜单/快捷键)。 启用此选项时请谨慎操作,因为您可能会意外调用方法。
选中代码时评估表达式
前往 并设置 在代码选择上显示值提示 选项。
计算任意表达式
评估任意表达式是最灵活的评估选项。 它允许您评估任何自定义代码,只要它在当前帧的上下文中。 使用此功能,您可以计算声明、方法调用、循环等。
要评估任意表达式,请在 计算表达式 字段中输入它,然后在 变量 窗格中按 Enter

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

如果您想评估长代码块,您可能需要为此使用专用对话框:
在专用对话框中评估表达式
如果您想从当前在您面前的某个表达式或变量开始(例如,在编辑器或 变量 窗格上),请选择它。
前往 Alt+F8 或从上下文菜单中选择 计算表达式。 快捷键可能在 Ubuntu 上无法使用(为正确操作, 调整快捷键配置)。

在 计算 对话框中,修改所选表达式或在 表达式 字段中输入一个新的。 点击 展开 Shift+Enter 以修改多行代码片段。

点击 计算 (Ctrl+Enter 以进入多行模式)。 表达式结果显示在 Result 字段中。
表达式的结果取自 return 语句。 当没有 return 语句时,结果取自代码的最后一行(甚至不必是表达式:单个字面量也可以)。 当没有有效的行可取值时,结果是
undefined。 如果无法计算指定表达式, Result 字段将指示原因。
计算 对话框是非模态的,因此您可以将焦点切换回编辑器以复制其他变量和表达式。 您还可以打开多个 计算 对话框。
内联查看值
RubyMine 在变量使用的旁边显示其值。
一旦变量值更改,内联视图将会更新为新值并更改其颜色。

默认情况下,内联视图是启用的。 要关闭它,请在 设置 对话框(Ctrl+Alt+S )中,转到 并禁用 内联显示值 选项。
添加内联监视
如果您希望某个表达式的结果显示在特定的行上,您可以为此设置一个内联 watch。 内联监视是持久的,并且在会话重启后仍然保持活动状态。
点击指向您想跟踪其字段的对象的内联提示。
在弹出窗口中,选择该字段并点击 添加为内联监视。

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

您在编辑器中设置的内联监视也会显示在 内联监视 下,位于 调试 工具窗口的变量窗格中:
要删除行内监视,请将鼠标悬停在监视上,然后点击旁边的叉号。
可视化 JSON 和 XML
当您展开 内联值或 计算包含 JSON 或 XML 的字符串表达式时,RubyMine 会为您提供数据的结构化和格式化视图。
这使您可以使用编辑器功能,例如 代码折叠和 扩展或缩小选择 ,以便处理子树并在大型对象中方便地导航。
使用预览弹出窗口中的选项卡在结构化视图和原始视图之间切换:

监视
如果您想跟踪某个变量或更复杂表达式的结果,请为此变量或表达式设置监视。 当您需要计算未在变量列表中定期显示的内容,或固定某些实例变量以消除每次 单步后展开树的需要时,这非常有用。
此功能仅在程序在触发断点后挂起时有效(而非 暂停)。
在所选帧的上下文中评估 Watches。 监视在上下文之外或编译失败时无法评估。 如果是这种情况,手表将标有错误图标 。
添加监视
根据您想要跟踪的表达式,执行以下操作之一:
当前上下文中的表达式:右键单击 变量 选项卡上的表达式,然后从上下文菜单中选择 添加至监视。
任意表达式:在 变量 选项卡的顶部部分输入表达式,然后单击 添加至监视 图标。

编辑器中的表达式:选择表达式,右键单击它,然后从上下文菜单中选择 添加至监视。

编辑监视
右键点击所需的监视器,然后选择 编辑。
删除监视
要移除单个监视,请右键点击并选择 移除监视。 或者,选择手表并按 Delete。
要移除所有监视,右键单击任意位置并选择 移除所有监视。
监视允许执行与变量相同的操作。 例如,您可以 在专用对话框中查看它们 ,或使用它们 导航到源代码。
监视是您项目的一部分。 这意味着您可以停止并重新运行调试会话而不会有丢失它们的风险。
暂停和恢复监视
有时,监视可能依赖于本地上下文或涉及大量计算,使其在某些步骤中不适合计算。 在这种情况下,您可以暂停监视并按需计算它。
要暂停监视,右键点击它并选择 暂停 Watch。

要恢复监视,右键点击它并选择 恢复 Watch。

要对暂停的监视进行一次性评估,请点击监视附近的 计算。

执行点
返回当前执行点
检查程序状态涉及在代码中导航,您经常需要返回到程序挂起的位置。
请执行以下操作之一:
在主菜单中,进入 .
按下 Alt+F10。
单击
,位于 调试 工具窗口的单步执行工具栏上,并从打开的上下文菜单中选择
显示执行点。
当前的执行点用蓝色线条表示。 此行代码尚未执行。
