Итак, если кому-то интересно, это последний код, который я написал, объединивший комментарии и оригинальный ответ.Это записывает определенные пользователем и встроенные в глобальные переменные доступы.gnumber и snumber - это просто счетчики, которые можно распечатать, чтобы получить общее количество раз, когда глобальная переменная была установлена или извлечена
local globals = _G
_G = {}
local gnumber, snumber = 0, 0
globals.setfenv(0, _G)
setmetatable(_G, {
__newindex = function (_, k, v)
snumber = snumber + 1
io.write("Setting global variable ", k, "\n")
io.write(debug.traceback(), "\n")
rawset(globals, k, v)
end,
__index = function (_, k)
gnumber = gnumber + 1
io.write("Getting global variable ", k, "\n")
io.write(debug.traceback(), "\n")
return rawget(globals, k)
end,
})