debug

显示已弃用

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

为在 Roblox 中调试代码提供几个基本功能。与 Lua 内置的 debug 图书馆不同,此版本已被重度沙箱化。

概要

职能

职能

traceback

返回当前函数调用堆的追踪记录为字符串;换言之,这是到目前为止已调用的函数的描述。在调试期间,它会像错误堆溯追踪一样行动,但不会停止脚本的执行。

level 参数指定要考虑的调用堆级别,其中 1 是调用 debug.traceback() 本身的调用,2 是调用函数调用 debug.traceback() 的调用,等等。请参阅下面的代码示例,了解顺序函数调用的示例。

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

以下示例包括顺序函数调用;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

返回当前函数调用堆的追踪记录为字符串;换言之,这是到目前为止已调用的函数的描述。在调试期间,它会像错误堆溯追踪一样行动,但不会停止脚本的执行。

level 参数指定要考虑的调用堆级别,其中 1 是调用 debug.traceback() 本身的调用,2 是调用函数调用 debug.traceback() 的调用,等等。请参阅下面的代码示例,了解顺序函数调用的示例。

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

以下示例包括顺序函数调用;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()

请注意,此函数与 debug.getinfo 相似,是标准 Lua 库中不可用的部分,用于相同的目的。

参数

level: number

决定返回的信息应描述在调用堆的哪个级别。一个值 1 表示调用 debug.info() 的函数,一个值 2 表示调用那个函数的函数,等等。

options: string

描述返回信息应该代表什么的字符串。它必须只包含 0 或 1 个字符 slnaf 的实例,每个代表一块信息:

  • s ( 字符串 ) — 函数源标识符,与函数定义在脚本中的全名相等。
  • l ( 号码 ) — 由 level 代表的函数调用的行号。
  • n ( 字符串 ) — 函数名称;可能是 nil 对于未命名调试名的匿名函数和 C 函数。
  • a数量boolean)—函数的优先级,指示参数数量以及函数是否可变。
  • f函数)—被检查的函数。

返回

info

允许程序化检查调调用堆栈。该函数与 debug.traceback() 不同,保证它返回的数据格式。这对一般的记录和筛选目的以及发送数据到期望结构化输入的系统,例如崩溃聚合,也有用。


local function fnA()
end
local function fnB()
end
-- fnA() 和 fnB() 的输出线(“l”)、名称(“n”)和标识符(“f”)
print(debug.info(fnA, "lnf")) --> 1 fnA 函数:0x75e3d3c398a81252
print(debug.info(fnB, "lnf")) --> 5 fnB function: 0x6022a6dc5ccf4ab2

请注意,此函数与 debug.getinfo 相似,是标准 Lua 库中不可用的部分,用于相同的目的。

参数

function: function

返回的信息描述了调用堆的功能。

options: string

描述返回信息应该代表什么的字符串。它必须只包含 0 或 1 个字符 slnaf 的实例,每个代表一块信息:

  • s ( 字符串 ) — 函数源标识符,与函数定义在脚本中的全名相等。
  • l号码)—定义在 function 上的线。
  • n ( 字符串 ) — 函数名称;可能是 nil 对于未命名调试名的匿名函数和 C 函数。
  • a数量boolean)—函数的优先级,指示参数数量以及函数是否可变。
  • 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()

请注意,此函数与 debug.getinfo 相似,是标准 Lua 库中不可用的部分,用于相同的目的。

参数

thread: coroutine

coroutine.create() 返回的线程。

level: number

决定返回的信息应描述在调用堆的哪个级别。一个值 1 表示调用 debug.info() 的函数,一个值 2 表示调用那个函数的函数,等等。

options: string

描述返回信息应该代表什么的字符串。它必须只包含 0 或 1 个字符 slnaf 的实例,每个代表一块信息:

  • s ( 字符串 ) — 函数源标识符,与函数定义在脚本中的全名相等。
  • l ( 号码 ) — 由 level 代表的函数调用的行号。
  • n ( 字符串 ) — 函数名称;可能是 nil 对于未命名调试名的匿名函数和 C 函数。
  • a数量boolean)—函数的优先级,指示参数数量以及函数是否可变。
  • f函数)—被检查的函数。

返回

profilebegin

()

开始为 微型调试器 标签进行 profiling。

参数

label: string

这个 微型调试器 标签显示的文本。

返回

()

profileend

()

停止为最新的 MicroProfiler 标签进行分析,该标签 打开了。

返回

()

getmemorycategory

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

返回

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

setmemorycategory

开发者控制台 中为当前线程的内存类别分配一个自定义标签名称。对于分析多个线程在同一脚本中的内存使用有用,这些脚本通常会被归为同一个标签/名称下。返回当前线程的前一个记忆类别的名称。

参数

tag: string

返回

当前线程的前一个记忆类别。

resetmemorycategory

()

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

返回

()

dumpcodesize

()

显示个人函数和脚本的原生代码大小表。此功能仅在工作室的命令栏中可用。更多详情可以在 原生代码生成页面 上找到。

返回

()