Lua:如何使用debug.getlocal

local function ThisIsAFunction()
    local test1 = "我是一个本地变量"
    local asd = "我也是一个本地变量"
end

我要如何使用debug.getlocal来获取"ThisIsAFunction"中本地函数的值?

点赞
用户1442917
用户1442917
这样做应该可以:

local function printLocals() local i = 1 while true do local name, value = debug.getlocal(2, i) if not name then break end print(name, i, value) i = i + 1 end end

local function ThisIsAFunction() local test1 = "我是一个局部变量" local asd = "我也是一个局部变量" printLocals() end

ThisIsAFunction()


这应该会打印出:

test1 1 我是一个局部变量 asd 2 我也是一个局部变量

```

请注意,getlocal 只能获取已经在堆栈上的函数/帧的值(这就是为什么你需要从要检查的函数调用 printLocals)。

您可以使用 getinfo 来检查函数(从外部),但是您需要执行该函数进行检查,因此需要进行显式调用 printLocals 或使用调试钩子进行隐式调用。

2021-01-16 01:14:40