EngineDebugger

继承: Object

暴露内部调试器。

描述

EngineDebugger 处理编辑器与正在运行的游戏之间的通信。它会在运行游戏时激活,可以通过它收发消息,还负责管理性能分析器。

方法

void

clear_breakpoints()

void

debug(can_continue: bool = true, is_error_breakpoint: bool = false)

int

get_depth() const

int

get_lines_left() const

bool

has_capture(name: StringName)

bool

has_profiler(name: StringName)

void

insert_breakpoint(line: int, source: StringName)

bool

is_active()

bool

is_breakpoint(line: int, source: StringName) const

bool

is_profiling(name: StringName)

bool

is_skipping_breakpoints() const

void

line_poll()

void

profiler_add_frame_data(name: StringName, data: Array)

void

profiler_enable(name: StringName, enable: bool, arguments: Array = [])

void

register_message_capture(name: StringName, callable: Callable)

void

register_profiler(name: StringName, profiler: EngineProfiler)

void

remove_breakpoint(line: int, source: StringName)

void

script_debug(language: ScriptLanguage, can_continue: bool = true, is_error_breakpoint: bool = false)

void

send_message(message: String, data: Array)

void

set_depth(depth: int)

void

set_lines_left(lines: int)

void

unregister_message_capture(name: StringName)

void

unregister_profiler(name: StringName)


方法说明

void clear_breakpoints() 🔗

清除所有断点。


void debug(can_continue: bool = true, is_error_breakpoint: bool = false) 🔗

在运行脚本时触发调试中断,可以使用 can_continue 指定程序是否能够继续运行,还可以指定该中断是否是由断点导致的。


int get_depth() const 🔗

实验性: 未来版本中可能会修改或移除该方法。

返回当前调试深度。


int get_lines_left() const 🔗

实验性: 未来版本中可能会修改或移除该方法。

返回剩余的行数。


bool has_capture(name: StringName) 🔗

如果存在具有给定名称的捕获,则返回 true,否则返回 false


bool has_profiler(name: StringName) 🔗

如果存在具有给定名称的分析器,则返回 true,否则返回 false


void insert_breakpoint(line: int, source: StringName) 🔗

使用给定的 sourceline 插入一个新断点。


bool is_active() 🔗

如果调试器处于活动状态,则返回 true,否则返回 false


bool is_breakpoint(line: int, source: StringName) const 🔗

如果给定的 sourceline 代表一个已存在的断点,则返回 true


bool is_profiling(name: StringName) 🔗

如果存在具有给定名称的分析器,并且该分析器处于活动状态,则返回 true,否则返回 false


bool is_skipping_breakpoints() const 🔗

如果调试器跳过断点,则返回 true,否则返回 false


void line_poll() 🔗

强制调试器事件的一个处理循环。该方法的目的是当脚本可能过于繁忙时不时地处理事件,以便可以捕获无限循环之类的错误


void profiler_add_frame_data(name: StringName, data: Array) 🔗

使用给定的 namedata 调用分析器中的 add 可调用体。


void profiler_enable(name: StringName, enable: bool, arguments: Array = []) 🔗

使用给定的 namearguments 调用分析器中的 toggle 可调用体。会根据 enable 参数启用/禁用同一分析器。


void register_message_capture(name: StringName, callable: Callable) 🔗

使用给定的名称 name 注册消息捕获。如果 name 为“my_message”则会为“my_message:”开头的消息调用给定的可调用体。

Callable 必须接受消息字符串和数据数组参数。如果消息和数据有效,则可调用体必须返回 true,否则返回 false


void register_profiler(name: StringName, profiler: EngineProfiler) 🔗

使用给定的名称 name 注册分析器。详情见 EngineProfiler


void remove_breakpoint(line: int, source: StringName) 🔗

使用给定的 sourceline 移除一个断点。


void script_debug(language: ScriptLanguage, can_continue: bool = true, is_error_breakpoint: bool = false) 🔗

在运行脚本时触发调试中断,可以使用 can_continue 指定程序是否能够继续运行,还可以指定该中断是否是由断点导致的。


void send_message(message: String, data: Array) 🔗

发送消息,内容为给定的 messagedata 数组。


void set_depth(depth: int) 🔗

实验性: 未来版本中可能会修改或移除该方法。

设置当前调试深度。


void set_lines_left(lines: int) 🔗

实验性: 未来版本中可能会修改或移除该方法。

设置当前剩余的调试行。


void unregister_message_capture(name: StringName) 🔗

将具有给定名称 name 的消息捕获解除注册。


void unregister_profiler(name: StringName) 🔗

将具有给定名称 name 的分析器解除注册。