调试

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

Studio 提供许多常见在集成开发环境 (IDE) 中找到的调试工具。这些工具帮助您解决错误并检查脚本行 by-by 在运奔跑时。调试信息显示在 Watch 、 Call Stack 、 Breakpoints 和 2>Output2> 窗口中,您可以检查。

常规工作流程

如果您在体验中发现问题,或想要验证它作为您的意图工作,您可以按照以下步骤调试该代码:

  1. 插入中断点 在您想要检查的代码上。

  2. 脚本选项卡中,单击测试标签中的 播放运行 按钮以开始游戏测试会话,也称为调试会话。

    Playtest options in Script tab.
  3. 当脚本触发休断点时,游戏测试会暂停。 使用脚验证码。 检查 WatchCall StackOutput 窗口来帮助您诊疗和理解问题。

  4. 在还没有执行的代码行中插入额外的中断点来检查额外的数据。禁用删除中断点,如果您不再需要它们,那么您可以移除它们。

  5. 脚本 选项卡中,单击停止以结束调试会话。

重复以前的步骤直到您解决问题或找到其根本原因。 随着您学习整个工作流程,您可以配置中断点只在满足某些条件时打印消息到 输出 窗口,并且仅在客户端或服务器上运行。 有关更多信息,请参阅中断点配置

插入中断点

中断点是检查点,可以暂停或“打破”你的脚本在特定行上的执行。你可以使用暂停来检查和调试你的体验, 观看变量,并查看调用堆。中断点是一种最有效的调试工具,因此它是一种最有效的调试工具。你可以在任意执行代验证码的行上插入中断点。

要在代验证码行中插入标准中断点,请单击边缘图标,然后单击其行号的右侧。您还可以单击边缘图标,然后单击“插入中断点”。中断点显示为红点。要禁用它,请单击红点。

Breakpoint in gutter is a red dot

迈过代码

如果您在脚本中插入中断点,脚本将在该行脚本运行之前暂停。一个黄色箭头称为“调试器”,它指示哪个行代码将在下一步执行。

Active breakpoint in the debugger shows yellow arrow

当脚本暂停时,使用按钮在脚本选项卡中走过它们,然后单行执行以下代码。按钮还会在调用堆窗口的左上角出现。当您走过脚验证码时,请注意您的体验如何改变。

Debugging tools indicated in Script tab

下表总结了三种方法来步骤地穿过代验证码。在您击中中断点后,请单击脚本选项卡中的继续执行。

按钮行动快捷方式描述
Button to step into a line of code 步入 F11步骤进入 按钮将调试器移动到当前行中的函数代码。如果当前行中没有函数,调试器将移动到下一行。
Button to step over a line of code 跳过 F10步过按钮将调试器移到下一行代验证码,不会移动到函数。
Button to step out of a line of code 步出去 Shift F11步出按钮将调试器从当前函数中移动到下一个代码行后。如果当前行不在函数中,调试器将移动到下一个行。

检查代码

当发生错误时,您可以检查观看窗口、游戏测试用堆窗口、输出窗口和1>脚本编辑器1>来查看变量值和函数执行的信息。 有了这些信息,您可以找到您体验中的问题的根本原因。

观看窗口

观看者 窗口有两个选项卡: 变量我的手表 。1>变量1>选项卡显示当前变量的信息,而4>我的手表4>选项卡显示您定义的变量或表达的值。 两个选项卡在行运行前显示信息。

变量选项卡有以下栏目:

  • 名称 – 变量的声明名称。
  • 范围 – 变量的范围:它可以“被看到”并且访问,例如 Local、Global 或 Upvalue。
  • 值 – 变量的当前值。
  • 数据类型 - 变量的数据类型。

我的手表选项卡有以下栏目:

  • 表达 – 您想要监视的表达。
  • 值 – 当前值。
  • 数据类型 – 表达的数据类型。

变量 选项卡中,您可以通过单击过滤器标志来过滤变量的范围。您还可以根据需要排序行列。 窗口提供 both 扩展和收起的视图。

Watch Window with variable values

要检查 Watch 窗口中的代码:

  1. 如果 窗口未打开,请在 视图 选项卡中单击

  2. 当您的游戏测试会话暂停在休断点时,请考虑您期望当前行将如何更改该脚本中的变量值。

  3. 当您通过代验证码步骤时,注意变量在 变量 选项卡中变化。如果您想要查看脚本中不在变量选项卡中的表达,请打开 我的手表 选项卡。单击 脚本 栏中的空行,然后键入表达。如果您想要查看脚本编辑器中的变量,请双击变量名称,然后单

  4. 比较您期望和您在观看窗口中看到的变量和表达的值。如果您期望变量更改的方式与实际变更的方式存在差异,那么与变量或与它们交互的函数可能会导致问题或错误。

调用堆叠窗口

调用堆 窗口显示调试器到达交断点时下一个执行的代码。调用堆表示您调用哪个线从调试器到达交付点,如果您在其他函数中调用该函数,调用堆的顺序和哪些线您调用其他函数。顶部函数堆的上限是最后一个被调用的函数,如果您在脚本中调用该函数,调用堆的顺

Call Stack in Studio

如果您在不同的脚本中有多个中断点,它们可能会在同一时间暂停播放测试会话。您可以通过单击脚本名称旁边的箭头跳转到中断点。如果您单击 继续 ,则您将跳过暂停的所有中断点。

Call Stack with multiple breakpoints

要在调试会话中在调用堆中检查代码:

  1. 如果 调用堆 窗口未打开,请在 视图 选项卡中单击 调用堆

  2. 当您的体验在休息断点暂停时,请考虑您期望功能调用的顺序在那个脚本中。

    Script Editor with two functions and one breakpoint
  3. 调用堆显示函数调用的顺序。如果中断点位于函数中,则会显示该函数的哪个函数,如果有的话。调用堆还显示每个函数的名称和行号。单击行以跳转到该函数。

    Click in Call Stack to jump to line
  4. 比较您在步骤 2 中想象的函数调用的顺序和步骤 3 的实际顺序。如果存在任何差异,则会在您期望代码如何处理的方式和实际处理方式之间存在差异,从而导致潜在的问题和错误。

输出窗口

输出窗口,从视图选项卡访问,显示从运行脚本、Roblox Engine、日志消息、来电于print()、调用1> print()1>和调用4> warn4>。

脚本编辑器

调试器与 脚本编辑器 集成在一起。当您在脚本中暂停时,您可以将鼠标悬停在变量名称上,以便查看其值。例如您可以查看函数调用中传递的表的值。

Mouseover a variable in Script Editor to show value

关闭点配置

您可以配置中断点只会在满足某些条件时打印消息到输出窗口,并且仅在客户端或服务器上运行。您还可以将这些配置混合在一起,以最佳适合您的调试需求。

编辑休息点

您可以随时编辑休息点的配置,包括在游戏测试会话中。如果您在游戏测试会话中编辑休息点,编辑将在您完成它后持续存在。您还可以编辑休息点,该休息点正在暂停您的游戏测试会话,但更改不会在下一次游戏测试会话中应用。

要编辑休断点的配置:

  1. 右击打断点,然后单击 编辑打破点

    Right click to edit a breakpoint in Studio
  2. 编辑休息点 窗口中,配置休息点。

    Edit Breakpoint window in Studio

条件、日志消息和选项

对于每个断点,您可以设置其 条件日志消息继续执行 和1>上下文1>。

条件是确定是否激活休息点的表达。休息点是可选的。如果n 为空,休息点总是激活。如果42 为 true,休息点只会在变量1> 42

输出窗口打印条件下的 条件消息 是输出条件是真的时打印到 输出窗口 的条件消息的表达。 格式 条件消息的格式与 1> print()1> 语句的参数相同。 例如,将条件消息设置为 4> "

继续执行选项确定是否在启动时暂停脚本,如果是这样,它的打断会暂停脚本。它的用处是如果您想要在不停止执行的情况下记录变量或式的值。此选项默认为禁用。

上下文 是指在客户端、服务器或编辑中是否启动休息点。如果上下文是客户端,休息点将在客户端脚本中触发。如果上下文是服务器,休息点将在服务器脚本中触发。如果上下文是编辑,休息点将在您调试插件时触发。如果您单击“自定义”,窗口会显示当前上下文。

Edit Breakpoint Window shows Custom Context

条件性休息点和日志点

Studio 提供命名的变化点来使插入变化点更快。要插入命名的变化点,请右击边缘点的右边,然后单击您想要插入的变体。

Right click to insert a breakpoint

条件断点 是一个带有 条件继续执行 功能已禁用的条件断点。条件断点只会在脚本中停止运行,如果条件是真的,因此它们对调试函数在特定变量下的执行情况有用。条件断点使用变量之前的值

木头点 是一个断点,具有 木头消息继续执行 功能。 木头点在脚本不间断地执行下,向输出窗口无需暂停您的脚本,因此它对调试变量值有用。 当您插入 1> 木头点1> 时,您的 cursor 将在线上的

Logpoints 通常比 print() 语句更有效用于调试变量,因为它们允许您将消息记录在输出窗口,而不必停止或重新启动正在运行的 Playtest 会话。 与 print() 语句比较,它们使您的代码清洁,而且调试时更容易移除。

禁用中断点

有很多方法可以禁用和重新启用中断点:

  • 点击断点的标志。
  • 编辑休息点,并切换其启用状态。
  • 右击“打破”图标,然后单击“禁用打破”或“启用打破”。

删除休息点

要删除休断点,请单击其标志。您也可以右击其图标并单击 删除休息点

断路器窗口

打破点窗口显示您体验中的所有打破点。要打开打破点窗口,请单击 Studio 顶部的“视图”选项卡,然后单击 “打破点”。

Breakpoints window in Studio

打破点窗口有以下栏位:未标记、脚本、行、源线、条件、日志消息和继续执行。 打破非标记的、脚本和行列栏位总是显示,但您可以通过单击窗口右上角的三个点来切换其他栏位。

在未命名的栏中,(x3)标签表示同一行代验证码上的休息点数,并且图标表示休息点配置。休息点在同一行上共享相同的条件、记录消息和继续执行,但在上下文中不同。您可以在“休息点”窗口中编辑休息点的配置。例如,您可以通过编辑其“休息点”栏中的文本区域来编辑休息点的条件。

Edit the Condition of a Breakpoint in the Breakpoints Window

您可以通过在“启用”列中单击其中的休息点图标来启用或禁用休息点。您还可以通过单击以下按钮来启用、停用或删除一些或所有休息点。

按钮行动
Button to disable all breakpoints禁用所有休息点。如果任何休息点已禁用,请启用它全部。
Button to delete all breakpoints删除所有断路点。

断点图标

休息点的图标取决于是否启用、有条件和有日志消信息。如果休息点有日志消信息,它就会无论有没有条件显示为休息点。

名称图标启用条件日志消息
破坏点没有没有
没有没有没有
条件反射没有
没有没有
日志点也许
没有也许

其他调试工具

除了调试器外,Studio 还提供其他调试工具,可让您在体验中修复问题和错误。

命令栏

命令栏允许您在体验运行时运行 Luau 命令。它可以从 Studio 的 视图 选项卡和在开发者控制器中使用。

开发者控制器

开发者控制器 提供一系列包括客户端和服务器输出、内存使用、网络性能和更多的细节。要打开开发者控制器在测试或玩游体验时,请键入/console 在聊天中或按下F9。有关更多信息,请参阅1>开发者控制器1>。

日志文件

当脚本在 Studio 或 Player 应用程App打印时,脚本会在本地文件系统中的日志文件中记录这条消息。这些文件的位置由操作系统决定。

窗户

要访问 Windows 上的日志文件:

  1. 打开 文件浏览器 .
  2. 导航到 %LOCALAPPDATA%\Roblox\logs 目录。
  3. 双击一个日志以打开它。Logs with the same XXXXX value are from the same Studio session.

Mac

要访问 Mac 上的日志文件:

  1. 打开 查找器
  2. 在菜单栏中,选择 > ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ �
  3. 在对话框中,输入 ~/Library/Logs/Roblox
  4. 双击结果导航到 Roblox 日志目录。
  5. 在目录中,双击一个日志以打开它。

iOS

您可以使用 Mac 收集 iOS 日志,或使用 iOS 设备收集。

要访问 Mac 上的 iOS 日志文件:

  1. 将 iOS 设备连接到 Mac。
  2. 打开 查找器
  3. 导航到 工具 并打开 控制器 应用程序。
  4. 要在控制应用程序中实时记录,请从侧栏中选择 iOS 设备,单击 开始 按钮,然后在 iOS 设备上重现问题。
  5. 要在控制应用程序中弹充已归档的日志,请在 sudo log collect --device-name "[iOS Device Name]" 中运行 sudo log collect --DEVICE-NAME 在 终端 。确保设备名称中没有空格,否则在运行命令时可能会出错。

安드ROID

要访问 Android 上的日志文件:

  1. 导航到 设置 > 系统 > 开发者选项
  2. 切换 开发者选项
  3. 在电脑上下载并安装 Android Studio
  4. 在 Android Studio 中,单击 Logcat
  5. 将 Android 设备连接到电脑,以便自动将 Logcat 弹满木头。