跳转至

GFAsyncTrackerUtility

API Reference / Standard / 类索引

  • 路径:addons/gf/standard/utilities/debug/gf_async_tracker_utility.gd
  • 模块:Standard
  • 继承:GFUtility
  • API:public
  • 类别:运行时服务 (runtime_service)
  • 首次版本:7.0.0

可选异步句柄追踪工具。 默认关闭。启用后可登记异步完成源、通道、超时控制器或项目自定义句柄, 并通过弱引用生成活动句柄快照,帮助诊断未完成、未释放或异常停留的异步流程。

成员概览

类型 名称 签名
信号 async_handle_tracked signal async_handle_tracked(tracking_id: int, label: StringName)
信号 async_handle_untracked signal async_handle_untracked(tracking_id: int, label: StringName)
常量 DEFAULT_MAX_STACK_TRACE_CHARS const DEFAULT_MAX_STACK_TRACE_CHARS: int = 4000
属性 tracking_enabled var tracking_enabled: bool = false
属性 stack_trace_enabled var stack_trace_enabled: bool = false
属性 max_stack_trace_chars var max_stack_trace_chars: int = DEFAULT_MAX_STACK_TRACE_CHARS:
方法 dispose func dispose() -> void:
方法 track_handle func track_handle( handle: Object, label: StringName = &"", metadata: Dictionary = {}, snapshot_provider: Callable = Callable() ) -> int:
方法 untrack_id func untrack_id(tracking_id: int) -> bool:
方法 untrack_handle func untrack_handle(handle: Object) -> int:
方法 clear_invalid func clear_invalid() -> int:
方法 clear func clear() -> void:
方法 check_and_reset_dirty func check_and_reset_dirty() -> bool:
方法 get_active_records func get_active_records(include_invalid: bool = false) -> Array[Dictionary]:
方法 get_debug_snapshot func get_debug_snapshot() -> Dictionary:

信号

async_handle_tracked

  • API:public
  • 首次版本:7.0.0
signal async_handle_tracked(tracking_id: int, label: StringName)

句柄被登记时发出。

参数:

名称 说明
tracking_id 追踪 ID。
label 追踪标签。

async_handle_untracked

  • API:public
  • 首次版本:7.0.0
signal async_handle_untracked(tracking_id: int, label: StringName)

句柄被移除追踪时发出。

参数:

名称 说明
tracking_id 追踪 ID。
label 追踪标签。

常量

DEFAULT_MAX_STACK_TRACE_CHARS

  • API:public
  • 首次版本:7.0.0
const DEFAULT_MAX_STACK_TRACE_CHARS: int = 4000

默认堆栈文本最大长度。

属性

tracking_enabled

  • API:public
  • 首次版本:7.0.0
var tracking_enabled: bool = false

是否启用追踪。关闭时 track_handle 直接返回 0。

stack_trace_enabled

  • API:public
  • 首次版本:7.0.0
var stack_trace_enabled: bool = false

是否在登记时捕获调用堆栈。

max_stack_trace_chars

  • API:public
  • 首次版本:7.0.0
var max_stack_trace_chars: int = DEFAULT_MAX_STACK_TRACE_CHARS:

单条堆栈文本最大长度。

方法

dispose

  • API:public
  • 首次版本:7.0.0
func dispose() -> void:

清除所有追踪记录。

track_handle

  • API:public
  • 首次版本:7.0.0
func track_handle( handle: Object, label: StringName = &"", metadata: Dictionary = {}, snapshot_provider: Callable = Callable() ) -> int:

登记一个异步句柄。

参数:

名称 说明
handle 待追踪对象。
label 稳定标签;为空时使用 handle.get_class()。
metadata 追踪上下文。
snapshot_provider 可选无参快照回调;返回值会收窄为 Dictionary。

返回:追踪 ID;未启用或 handle 为空时返回 0。

结构:

  • metadata: Dictionary,包含调用方定义的追踪上下文。

untrack_id

  • API:public
  • 首次版本:7.0.0
func untrack_id(tracking_id: int) -> bool:

按追踪 ID 取消登记。

参数:

名称 说明
tracking_id 追踪 ID。

返回:成功移除时返回 true。

untrack_handle

  • API:public
  • 首次版本:7.0.0
func untrack_handle(handle: Object) -> int:

移除指定对象的所有追踪记录。

参数:

名称 说明
handle 待移除对象。

返回:移除数量。

clear_invalid

  • API:public
  • 首次版本:7.0.0
func clear_invalid() -> int:

清除已经失效的弱引用记录。

返回:清除数量。

clear

  • API:public
  • 首次版本:7.0.0
func clear() -> void:

清空所有追踪记录。

check_and_reset_dirty

  • API:public
  • 首次版本:7.0.0
func check_and_reset_dirty() -> bool:

判断是否存在未读取的追踪变更,并重置 dirty 标记。

返回:自上次调用以来有追踪变化时返回 true。

get_active_records

  • API:public
  • 首次版本:7.0.0
func get_active_records(include_invalid: bool = false) -> Array[Dictionary]:

获取活动追踪记录快照。

参数:

名称 说明
include_invalid 是否包含弱引用已失效的记录。

返回:追踪记录数组。

结构:

  • return: Array[Dictionary],每项包含 tracking_id、label、valid、age_msec、metadata 和可选 snapshot / stack_trace。

get_debug_snapshot

  • API:public
  • 首次版本:7.0.0
func get_debug_snapshot() -> Dictionary:

获取追踪调试快照。

返回:调试快照。

结构:

  • return: Dictionary,包含 enabled、active_count、invalid_count、dirty 和 records。