调试器

调试器是用于检查游戏的强大工具,特别是用于跟踪代码中的错误和错误、检查脚本是否在应该运行的时间运行以及变量和数组是否包含预期值。您可以通过以下方式启动调试器:使用IDE顶部的调试Debug Icon按钮,从 GameMaker IDE 运行游戏,或者转到构建菜单并选择"调试"

注意 Windows 防火墙 (或您运行的任何其他防火墙程序)可能会提示您为此模块创建安全例外。您必须这样做,否则它将无法正常工作。这是由于调试器的工作方式,并且对于调试移动平台是必不可少的。

注意在某些系统上,由于GameMaker测量内存使用情况的方式,您可能会看到非常小的内存增加。

在调试模式下运行游戏时,IDE 将显示调试器可用的不同工具:

The Debugger Windows上图显示了调试器的默认布局,但与 IDE 的其他方面一样,您可以根据需要对其进行自定义,关闭不需要的窗口或更改确实需要的文档和窗口的大小。您可以随时从 IDE 顶部的调试器上下文菜单重置调试器布局,或重新打开关闭的窗口:

Debugger Context Menu下面我们将解释调试器的每个部分的用途:

图表视图图表视图

图表视图以图形方式显示项目在一段时间内如何使用内存及其帧速率:

Debug Graph该图显示当前和平均内存使用量以及一段时间内的当前和平均FPS,您可以使用 Control Icon / CMD Icon 与鼠标滚轮MMB Icon一起放大或缩小,如果您将鼠标光标放在任何图形元素上,它将显示选定点处该元素的值。

图表视图还将某些调试事件显示为沿图形长度的点。这些事件是由 GameMaker 在游戏运行的特定时刻自动生成的,以显示特定的重要事件,但您也可以使用函数 show_debug_message()debug_event() 添加您自己的图形元素。系统事件将以不同于通过代码触发的事件的颜色进行标记:

Debug Graph Events在调试中运行游戏并将鼠标悬停在这些事件上时,将显示在游戏中该点触发的所有事件的列表,您可以选择将列表拉出到单独的窗口中进行修改,方法是单击"点击以在新窗口中打开"文本:

Debug Events

 

资源视图资源视图

资源视图显示项目中正在使用的所有资源的列表,这些资源可以包含代码或GML可视操作。此部分的工作方式与资源浏览器非常相似,您可以展开其中的项目以显示更多信息,例如,特定对象的不同事件。然后,您可以在任何资源上双击LMB Icon ,以在代码视图窗口中打开它的代码,您可以在该窗口中检查值并添加或删除断点

 

调用堆栈调用堆栈

此窗口将显示事件的当前调用堆栈,以及单步执行的代码的行号。调用堆栈本质上是一种后进先出的数据结构,它显示了所有游戏代码的执行顺序,这些代码来自GameMaker运行者-因为调试是使用虚拟机(VM)--完成的--来自您为游戏编写的代码。在此处显示任何信息之前,调试器需要已暂停

 

工具栏工具栏

工具栏有调试器控件以及一些基本信息,如内存使用情况、游戏的当前(真实)FPS以及一个指示器,用于显示调试器当前是否已连接(当连接到项目的运行实例时,该指示器将显示为绿色,否则将显示红色)。可用的控件包括:

Play Debug IconThis starts the game again after it has been paused (keyboard shortcut "f5").
Pause Debug IconThis will pause (break) the game.
Restart Debug IconRestarts the game.
Stop Debug IconStops the game.
Step In Debug IconStep into a code block or script (keyboard shortcut "f11").
Step Over Debug IconStep over a code block or script (keyboard shortcut "f10").
Step Out Debug IconStep out of a code block or script (keyboard shortcut Shift Icon + "f11").
Real Time Debug IconTurn on or off real time updates for the debug information (this is off by default).

前三个按钮用于控制您的游戏,允许您随时开始暂停重新启动停止游戏。当游戏暂停时(通过单击暂停按钮或从断点),您可以使用三个步骤按钮单步执行代码。

当我们谈论"单步执行"代码时,我们的意思是-您可以告诉游戏运行当前的代码行,然后"单步执行"到下一行代码,允许您根据需要一次运行整个游戏的一行代码。通常情况下,您只需使用单步执行按钮即可完成此操作,但您还有一个按钮用于跳过代码,另一个按钮用于退出执行代码。当您有大的脚本要运行时,跳过是很有用的,因为单击这将作为单个步骤运行整个脚本或代码块,然后在下一行停止,而跨出将使您退出脚本(它们将同时运行),并在之后范围发生变化时停止在下一步。

实时更新的最后一个图标允许调试窗口实时更新其数据,这样您就可以看到变量是如何变化的,或者实例是如何创建和销毁的。请注意,这可能会影响游戏性能,而且并非所有信息都是实时可用的。例如,无法实时查看渲染状态监视(请参阅有关监视器的部分)。

 

代码视图代码视图

在代码视图中,我们可以在项目运行时查看和查看不同的脚本或事件代码。默认情况下,开始时为空,但您可以在资源视图中的任何资源上双击LMB Icon以在此处打开它。您还可以打开多个不同的事件或脚本,它们将作为选项卡添加到代码视图工作区的顶部。

当代码视图中的任何代码窗口处于打开状态时,您可以在栏间距(行号所在的位置)中单击LMB Icon以添加或删除断点(有关断点的信息,请参见本页下方的更多部分)。

您还可以使用鼠标右键RMB Icon打开上下文菜单,该菜单还允许您添加或删除断点并将任何选定的代码复制到剪贴板。

 

监视器监视器

这一部分致力于"观察"游戏的不同方面,以便进行更深入和详细的调试。下一页将详细介绍这一点:


需要注意的是,在游戏运行时,默认情况下不会使用变量值和其他详细信息更新调试窗口,因此您必须首先使用调试器中的暂停按钮Pause Debug Icon暂停游戏,然后才能使用本地、全局和其他数据,或者从顶部的图标启用实时更新Real Time Debug Icon。此规则的唯一例外是配置文件视图,它在独立于实时开关启用时实时更新,因为它有自己的开/关按钮。您可以在以下页面中找到有关此视图的完整信息:

调试游戏的另一个重要部分是使用断点。断点是项目代码中您希望它停止的位置,以便您可以看到正在发生的事情。在调试器运行的情况下,您可以随时在任何代码或脚本块中添加或删除断点,方法是在线框(行号所在的位置)中左键单击LMB Icon,或者使用鼠标右键RMB Icon打开上下文菜单,该菜单还允许您添加或删除断点:

Add/Remove Breakpoints 也可以从 GameMaker IDE 设置断点。在编写项目时,可以随时使用 f9( 或使用鼠标右键 RMB Icon 并选择 " 切换断点 ") 在对象窗口中的操作上 (对于 GML 可视化用户) 或在代码编辑器窗口中的行上添加或删除它们。现在,当您在调试模式下运行游戏时,它将在您定义的一个或多个点上暂停。

从 IDE 中设置的断点与您的项目一起保存,并将在各种运行中保持不变,直到再次删除。但是,如果您在调试器中向代码添加断点,则在关闭模块或启动新的测试运行后,该断点将丢失。请注意,所有断点都将出现在输出窗口中,您可以在其中启用、禁用甚至删除断点。