debug

显示已弃用

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

为Roblox的代码调试提供几个基本功能。与Lua的debug 库存在Lua的默认版本不同,这个版本已被重新沙箱。

概要

职能

职能

traceback

将当前函数堆的调用记录返回为字符串;在其他 words,这意味着对上调用的函数的描述。在调试时,这将像一个错误堆追踪行为,但不会停止脚本的执行。

leve等级 参数指定要考虑的调用堆级别,其中 1 是调用 debug.traceback() 本身, 1>21> 是调用函数调用 4> Li调试rary. debug. traceback()4> ,从而推动。请参阅下面的代码示例获取示例。

注意,这个函数经常会返回不准确的结果 (比原始源验证码) ,并且返回的追踪回调格式可能会随时更改。您不应该 解析返回值以获取特定信息,例如脚本名称或行号。

下面的例子包括顺序的函数调用; fnB() 被调用,并且调用 fnA() ,然后调用 debug.traceback()


local function fnA()
print(debug.traceback("Specific moment during fnA()"))
end
local function fnB()
fnA()
end
-- 调用函数fnB()开始追踪
fnB()

参数

message: string

返回的第一行字符串。

level: number

调用堆的上调数。

默认值:1

返回

当前函数调用调用堆栈的追踪。

traceback

将当前函数堆的调用记录返回为字符串;在其他 words,这意味着对上调用的函数的描述。在调试时,这将像一个错误堆追踪行为,但不会停止脚本的执行。

leve等级 参数指定要考虑的调用堆级别,其中 1 是调用 debug.traceback() 本身, 1>21> 是调用函数调用 4> Li调试rary. debug. traceback()4> ,从而推动。请参阅下面的代码示例获取示例。

注意,这个函数经常会返回不准确的结果 (比原始源验证码) ,并且返回的追踪回调格式可能会随时更改。您不应该 解析返回值以获取特定信息,例如脚本名称或行号。

下面的例子包括顺序的函数调用; fnB() 被调用,并且调用 fnA() ,然后调用 debug.traceback()


local function fnA()
print(debug.traceback("Specific moment during fnA()"))
end
local function fnB()
fnA()
end
-- 调用函数fnB()开始追踪
fnB()

参数

thread: coroutine

一个由 coroutine.create() 创建的线程。

message: string

返回的第一行字符串。

level: number

调用堆的上调数。

默认值:1

返回

当前函数调用调用堆栈的追踪。

info

允许程序式检查调用堆。这个函数与 debug.traceback() 不同,因为它确保数据的格式。这对于一般的日志和过滤目的非常有用,还可用于发送数据到系统,期望结构输入,例如崩溃聚集。


local function fnA()
-- 输出源标识符(“s”)和线(“l”) 在 1 和 2 级
print(debug.info(1, "sl")) -->fnA() 3
print(debug.info(2, "sl")) -->fnA() 7
end
fnA()

注意,这个函数与 调试.getinfo 类似,是标准 Lua 库中的一部分,它的目的是相同的。

参数

level: number

确定在调用堆的哪个级别返回的信息应该描述。一个值为 1 代表调用 debug.info() 的函数,一个值为 2 代表调用该函数的函数,从而在 2>12> 代表调用该函数的函数。

options: string

描述返回信息应该代表的内容的字符串。它必须只包含 0 或 1 个实例的角色 slnaf ,每个角色都代表一个信息片:

  • s ( string ) — 函数源标识符,与脚本定义的全名相同。
  • l (number ) — 代表 level 的函数调用的线数。
  • n (字符串 — 函数的名称;可能为 nil 对无命名函数和 C 函数,没有分配调试名称。
  • a (numberboolean) — 函数的 arity,即参数数量和是否变体。
  • f (函数 ) — 被检查的函数。

返回

info

允许程序式检查调用堆。这个函数与 debug.traceback() 不同,因为它确保数据的格式。这对于一般的日志和过滤目的非常有用,还可用于发送数据到系统,期望结构输入,例如崩溃聚集。


local function fnA()
end
local function fnB()
end
-- 输出线(“l”)、命名“n”和识别“f” 对于 bothfnA() 和fnB()
print(debug.info(fnA, "lnf")) --> 1个fnA函数:0x75e3d3c398a81252
print(debug.info(fnB, "lnf")) --> 5 fnB function: 0x6022a6dc5ccf4ab2

注意,这个函数与 调试.getinfo 类似,是标准 Lua 库中的一部分,它的目的是相同的。

参数

function: function

信息返回的函数堆的函数。

options: string

描述返回信息应该代表的内容的字符串。它必须只包含 0 或 1 个实例的角色 slnaf ,每个角色都代表一个信息片:

  • s ( string ) — 函数源标识符,与脚本定义的全名相同。
  • l ( number ) — 定义了 function 的行。
  • n (字符串 — 函数的名称;可能为 nil 对无命名函数和 C 函数,没有分配调试名称。
  • a (numberboolean) — 函数的 arity,即参数数量和是否变体。
  • f (函数 ) — 被检查的函数。

返回

info

允许程序式检查调用堆。这个函数与 debug.traceback() 不同,因为它确保数据的格式。这对于一般的日志和过滤目的非常有用,还可用于发送数据到系统,期望结构输入,例如崩溃聚集。


local function fnA()
-- 输出源标识符(“s”)和线(“l”) 在 1 和 2 级
print(debug.info(1, "sl")) -->fnA() 3
print(debug.info(2, "sl")) -->fnA() 7
end
fnA()

注意,这个函数与 调试.getinfo 类似,是标准 Lua 库中的一部分,它的目的是相同的。

参数

thread: coroutine

一个由 coroutine.create() 创建的线程。

level: number

确定在调用堆的哪个级别返回的信息应该描述。一个值为 1 代表调用 debug.info() 的函数,一个值为 2 代表调用该函数的函数,从而在 2>12> 代表调用该函数的函数。

options: string

描述返回信息应该代表的内容的字符串。它必须只包含 0 或 1 个实例的角色 slnaf ,每个角色都代表一个信息片:

  • s ( string ) — 函数源标识符,与脚本定义的全名相同。
  • l (number ) — 代表 level 的函数调用的线数。
  • n (字符串 — 函数的名称;可能为 nil 对无命名函数和 C 函数,没有分配调试名称。
  • a (numberboolean) — 函数的 arity,即参数数量和是否变体。
  • f (函数 ) — 被检查的函数。

返回

profilebegin

void

开始为 MicroProfiler 标签进行 profiling。

参数

label: string

显示此 MicroProfiler 标签。

返回

void

profileend

void

停止对最新 MicroProfiler 标签,它打开了 debug.profilebegin()

返回

void

getmemorycategory

返回当前线程的活跃内存类别的名称。

返回

当前线程的活跃内存类别。

setmemorycategory

开发者控制器 中将自定义标签名称分配到当前线程的内存类别。 有助于分析多个线程在同一脚本中的内存使用率,这些线程通常会被组合在一起以便在同一标签/名称下运行。 返回当前线程的内存类别名称。

参数

tag: string

返回

当前线程的上一级内存类别。

resetmemorycategory

void

重置 debug.setmemorycategory() 中分配的标签到自动分配值(通常是脚本名称)。

返回

void

dumpcodesize

void

显示一个表示个人函数和脚本规模的表子。 此功能仅在工作室的命令栏中可用。 更多信息可以在 生成原始代码 页面上找到。

返回

void