0Pricing
Lua Academy · Lección

La biblioteca debug

Inspeccione trazas de pila, variables locales y upvalues con la biblioteca debug.

La biblioteca debug es una lección gratuita de Lua Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Lua Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Lua Academy incluye 4 lecciones en total.

¿Qué es la biblioteca debug?

La biblioteca debug proporciona acceso de bajo nivel a los componentes internos de Lua: marcos de pila, variables locales, upvalues, hooks y estado de las coroutines. Úsela para depurar, no para la lógica de producción.

debug.traceback

debug.traceback(msg, level) devuelve una cadena con la pila de llamadas. Habitualmente se pasa a xpcall como controlador de errores.

local ok, err = xpcall(function()
  error("something went wrong")
end, debug.traceback)
print(err)

debug.getinfo

debug.getinfo(fn, what) devuelve una tabla con información sobre una función: nombre, origen, línea en la que se definió, etc.

local function foo() end
local info = debug.getinfo(foo, "Sl")
print(info.source, info.linedefined)

Inspección del nivel de la pila

Pase un entero a debug.getinfo para inspeccionar un marco de pila específico. El nivel 1 corresponde a la función actual y el 2, a la función llamadora.

local function where()
  local info = debug.getinfo(2, "Sl")
  return info.short_src .. ":" .. info.currentline
end
print(where())

debug.getlocal y debug.setlocal

debug.getlocal(level, n) devuelve el nombre y el valor de la variable local número n en un marco de pila.

local function example()
  local x = 42
  print(debug.getlocal(1, 1))  -- x  42
end
example()

debug.getupvalue y debug.setupvalue

Inspeccione y modifique los upvalues de una función. getupvalue(fn, n) devuelve el nombre y el valor.

local x = 10
local function f() return x end
print(debug.getupvalue(f, 1))  -- x  10
debug.setupvalue(f, 1, 99)
print(f())  -- 99

debug.sethook

debug.sethook(fn, mask, count) establece un hook que se invoca ante determinados eventos: "c" (llamada), "r" (retorno), "l" (línea) o cada N instrucciones.

local calls = 0
debug.sethook(function() calls = calls + 1 end, "c")
-- ... run some code ...
debug.sethook()  -- remove hook
print("calls:", calls)

debug.getmetatable

debug.getmetatable(obj) recupera la metatabla incluso cuando un campo __metatable bloquea getmetatable.

debug.upvalueid y upvaluejoin

debug.upvalueid(fn, n) devuelve un identificador único para un upvalue. debug.upvaluejoin(f1,n1,f2,n2) hace que ambos compartan la misma celda.

Precaución: riesgos de la biblioteca debug

La biblioteca debug puede vulnerar la encapsulación y romper invariantes. Nunca la utilice en código de producción. Resérvela para pruebas, creación de perfiles y herramientas de desarrollo.

debug.traceback en xpcall

El uso más habitual y seguro de debug en producción consiste en pasar debug.traceback como controlador de errores a xpcall para obtener mensajes de error detallados.

Pregunta sobre la biblioteca debug

¿Qué función de debug es segura y se utiliza habitualmente para gestionar errores en producción?

Resumen: biblioteca debug

La biblioteca debug expone marcos de pila, variables locales, upvalues y hooks. Use debug.traceback con xpcall para obtener errores detallados; considere el resto herramientas de introspección exclusivas para desarrolladores.

Preguntas frecuentes

¿La lección «La biblioteca debug» es gratis?

Sí — el texto completo de «La biblioteca debug» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Lua Academy, actualiza a CoddyKit PRO. El curso de Lua Academy incluye 4 lecciones en total.

¿Qué aprenderé en «La biblioteca debug»?

Inspeccione trazas de pila, variables locales y upvalues con la biblioteca debug. Practicas Lua Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Lua Academy?

No se requiere experiencia previa. Lua Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «La biblioteca debug»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Lua Academy?

Sí. Cada lección de Lua Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Funciones de la biblioteca math
  2. Funciones de la biblioteca table
  3. Bibliotecas os e io
  4. La biblioteca debug
← Volver a Lua Academy