蓝图调试

使用断点暂停执行,以检查图表和变量值。

Windows
MacOS
Linux

蓝图调试是一项非常强大的功能,它允许您在"在编辑器中运行(Play In Editor)""或"在编辑器中模拟(Simulate In Editor)"模式中暂停游戏执行,并通过使用断点单步调试蓝图或关卡蓝图的任何图表。

调试功能按钮

蓝图调试器在PIE和SIE会话期间提供对游戏执行的控制。当游戏运行时,这些功能按钮在工具栏 中处于启用状态。根据正在调试的蓝图的类型和调试会话的当前状态,会出现不同的调试功能按钮。有些功能按钮只有在相关的时候才启用,例如,当 断点(Breakpoint) 被命中时。

debugging_editor.png

当PIE模式或SIE模式处于活动状态时,调试(Debug) 选项卡(可从 蓝图编辑器(Blueprint Editor) 的窗口菜单中打开)以及 蓝图调试器(Blueprint Debugger) 将显示上下文相关的调试按钮。

blueprint_debugger.png

断点

断点 是指可以放置在蓝图图表节点上的标记。PIE或SIE模式期间即将执行带断点的节点时,游戏将暂停,开发人员将被带往蓝图编辑器的图表视图中的该节点。这提供了观察变量值并检查或单步调试蓝图内的执行流程的机会。给定蓝图的所有断点都显示在 调试选项卡(Debug tab) 中,可以在蓝图的图表中查看已选中的断点。要在节点上放置一个断点,右键单击节点并从上下文菜单中选择 添加断点(Add Breakpoint),此时节点的左上角将出现一个实心的红色八边形。通过再次右键单击节点,或者右键单击调试(Debug)选项卡中断点的条目,选择 移除断点(Remove Breakpoint) 命令,可以移除断点。

ActiveBreakpoint.png

该断点将在蓝图节点即将执行时中断游戏。

要在未完全移除断点的情况下暂时禁用断点,可以右键单击蓝图节点本身或者调试(Debug)选项卡中断点的条目,然后从上下文菜单中选择 禁用断点(Disable Breakpoint)。禁用的断点将显示为红色八边形轮廓。禁用的断点将不会执行,但可以轻松地再次启用。与反复销毁并重新生成断点相比,该过程更加便捷,更不易发生人为错误。

InactiveBreakpoint.png

该断点已被禁用,目前不执行任何操作,但可以在需要时轻松地再次启用。

若要启用已禁用的断点,请在节点上 右键单击(Right-clicking) 并选择 启用断点(Enable Breakpoint) 或单击 调试(Debug) 中断点旁边的图标来启用断点。这也可以通过 右键单击(Right-clicking) 调试(Debug) 选项卡中的断点并选择 启用断点(Enable Breakpoint) 来完成。可以在任何时候创建、禁用、启用或销毁断点,包括在调试会话期间。断点保存在项目.ini文件中,因此断点将在编辑器会话之间持久存在。

如果断点所处的位置无效,可能会显示为黄色,并带有感叹号。在某些情况下,编译蓝图可以解决该问题。如果不是这种情况,将鼠标光标置于断点图标上将显示解释说明。

WarningBreakpoint.png

该断点无效,永远不会被命中。在某些情况下,重新编译蓝图可以解决该问题。

当使用断点暂停执行时,编辑器将高亮显示并聚焦该节点,并且将在其上放置一个红色大箭头。

BreakingOnBreakpoint.png

该断点刚刚被命中,暂停了执行。

调试选项卡和蓝图调试器

调试(Debug) 选项卡以断点和监视值的形式显示了由设计师指定为重要的信息,以及已执行且属于蓝图的所有节点的跟踪堆栈。此窗口还显示了在使用断点时用于控制游戏执行的功能按钮。

查看窗口

蓝图查看窗口(Blueprint Watch Window) 设计用于通过允许您访问想要查看的变量和节点来加速调试。从您在编辑器中打开的每个蓝图查看数据,这些数据是当前调用堆栈的一部分,它们将被合并到单个列表中,每当蓝图执行暂停时,该列表将使用当前数据填充。您可以使用该列表检查变量和函数输出,同时可以在蓝图之间轻松跳转。可以展开数组、集、映射和其他数据结构,从而快速、方便地对其中包含的任何数据进行向下钻取检查。您还可以单击"节点名称(Node Name)"列中的条目转到任何蓝图中的指定节点,还可以选择"对象名称(Object Name)"列中的条目选择特定的对象实例。

调用堆栈

调试会话期间可用的 调用堆栈 在概念上类似于大多数C++开发环境中的调用堆栈。调用堆栈显示了蓝图与本地(C++)代码之间的执行流程,且蓝图函数当前在堆栈的顶部执行。

蓝图宏不会出现在调用堆栈中。相反,蓝图宏将作为调用它的蓝图函数的一部分出现。

ActiveBreakpoint.png

上面的蓝图函数递归执行阶乘计算。已在函数的末尾设置了断点。

当断点被命中时,调用堆栈将列出当前正在运行的函数,从顶部的当前函数开始,然后向下到调用函数。这意味着,每个行条目都包含一个函数的名称,该函数是由紧接其下一行上的函数调用的。在递归(自调用)函数的情况下,同一函数名可能在一行中出现多次。

CallStack_FiveFactorial.png

该调用堆栈显示了对上面显示的阶乘函数的一个五层递归调用,该函数最初是从Actor的主蓝图图表中调用的,而它反过来又响应从本地(C++)代码中调用的"BeginPlay"事件。

CallStack.png

要查看(或隐藏)调用堆栈,在 开发者工具(Developer Tools) 子菜单下的 窗口(Window) 下拉框中选择。

执行轨迹

执行轨迹(Execution Trace) 堆栈显示执行了的节点列表,其中最新的节点位于顶部。

蓝图调试 - 执行轨迹堆栈

在调试时,此列表会随着您对图表的单步调试而更新。

Tags
Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback