Получить все переменные в Lua для отладки с помощью getinfo / getlocal / getupvalue - PullRequest
1 голос
/ 11 марта 2020

Мне удалось получить почти все переменные из моего приложения Lua с помощью этой функции, но не те, которые являются локальными для файлов. lua ...

Пример в root из основной. lua: локальный тест = 10

Это не может быть найдено.

Есть идеи?

Примечание: я запускаю это в приложении Love2D, и эта функция вызывается из обратного вызова Love (love.draw).

function getvarvalue (name)
    local value, found

    -- try local variables
    local exit = false
    local level = 0
    while debug.getinfo(level) ~= nil do
        local i = 1
        while true do
            local n, v = debug.getlocal(level, i)
            if n then
                print("local "..i.." "..level.." name:"..n)
            end
            if not n then break end
            print(n)
            if n == name then
                value = v
                found = true
            end
            i = i + 1
        end
        if found then return value end
        level = level + 1
    end

    -- try upvalues
    level = 0
    while debug.getinfo(level) ~= nil do
        local func = debug.getinfo(level).func
        i = 1
        while true do
            local n, v = debug.getupvalue(func, i)
            if n~= nil then print("up "..i.." "..level.." "..n) end
            if not n then break end
            if n == name then return v end
            i = i + 1
        end
        if getfenv(func)[name] ~= nil then
            return getfenv(func)[name]
        end
        level = level + 1
    end

    -- not found
    return "?"
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...