Biblioteca standard debug oferă acces intern la stiva de execuție, variabilele locale și mașina virtuală Lua. Deși este destinată depanării și instrumentării de cod, funcțiile sale sunt esențiale pentru construirea de cadre de testare, loggere avansate și profilere de performanță.
Inspecția stivei de apeluri și metadatelor de funcție cu debug.getinfo
local function functieExemplu(param1, param2)
-- Nivelul 1 reprezintă funcția curentă, nivelul 2 este apelantul ei:
local info = debug.getinfo(1, "nSl")
print("Numele funcției:", info.name) -- "functieExemplu"
print("Sursa fișierului:", info.short_src) -- cale fișier sau string
print("Linia curentă de cod:", info.currentline)
print("Ce tip de cod este:", info.what) -- "Lua" sau "C"
end
functieExemplu("test", 123)
Inspectarea variabilelor locale din stivă cu debug.getlocal
local function calculeazaTotal(pret, tva)
local coeficient = 1.19
local total = (pret + tva) * coeficient
-- Iterăm prin toate variabilele locale ale nivelului 1:
local index = 1
while true do
local nume, valoare = debug.getlocal(1, index)
if not nume then break end
print(string.format("Variabilă locală [%d]: %s = %s", index, nume, tostring(valoare)))
index = index + 1
end
return total
end
calculeazaTotal(100, 20)
Avertisment de performanță: Funcțiile din biblioteca
debug dezactivează anumite optimizări ale compilatorului JIT și au un cost de rulare ridicat. Nu le folosiți în bucle critice de producție decât pentru logarea excepțiilor.
Întrebări & Exemple de Cod:
Biblioteca debug și Introspecție în Lua: debug.getinfo, debug.traceback și debug.sethookAi o nelămurire despre utilizarea comenzii
Biblioteca debug și Introspecție în Lua: debug.getinfo, debug.traceback și debug.sethooksau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.