Depurar y asegurar tus recursos · Lección 1/3 · 10 min

Depurar como un pro: errores, prints y resmon

Leer el error, poner prints estratégicos y cazar el lag con resmon: el kit de depuración completo.

La mayoría ve un error rojo y entra en pánico. Un pro lo lee: te dice casi siempre exactamente dónde mirar.

text
SCRIPT ERROR: @mi_banco/server.lua:42: attempt to perform arithmetic on a nil value (local 'saldo')

Un error real

  • @mi_banco → el recurso que falla.
  • server.lua:42 → archivo y LÍNEA exacta. Ve directo ahí.
  • attempt to perform arithmetic on a nil value → operaste (+, -, *) con un nil.
  • (local 'saldo') → la variable culpable es 'saldo': valía nil al hacer la cuenta.

Prints estratégicos (con interruptor)

lua
Config.Debug = true
local function dbg(...)
  if Config.Debug then print('[mi_banco]', ...) end
end

RegisterNetEvent('banco:retirar', function(cantidad)
  local src = source
  dbg('retirar pedido por', src, 'cantidad:', cantidad)
  local Player = QBCore.Functions.GetPlayer(src)
  dbg('Player existe?', Player ~= nil)
end)

Debug condicional

Cazar el lag con resmon

text
# En la consola del cliente (F8):
resmon
# Lista cada recurso y su CPU (ms) por frame.
# Verde < 1ms = bien. Amarillo/rojo = ese recurso te come FPS.

resmon

Pon prints ANTES y DESPUÉS del punto sospechoso: si el primero sale y el segundo no, el fallo está en medio. Y cuando te atasques de verdad, pega el error y el código en el chat de Crxative-M: te da la causa raíz y el fix sin perder la tarde.

Practica lo aprendido

0/3
Test

Lees en consola: 'SCRIPT ERROR: @mi_banco/server.lua:42: attempt to perform arithmetic on a nil value (local 'saldo')'. ¿Por dónde empiezas?

Pista

Lee el error de izquierda a derecha: recurso → archivo:línea → qué pasó → variable.

Rellena los huecos

Completa el print de depuración condicional para que solo salga cuando Config.Debug está activo.

1Config.Debug = true
2local function dbg(...)
3 if Config.Debug then ('[mi_banco]', ...) end
4end
Pista

La función básica de Lua para escribir en consola.

Test

Ejecutas /resmon en la consola del cliente (F8). ¿Qué te dice y qué buscas?

Pista

res-mon = resource monitor. Mide rendimiento, no errores.

Reto: prográmalo tú

Una función no da dinero y no da error. Describe qué prints pondrías para encontrar dónde se rompe.

Escríbelo tú en tu editor (VS Code) y pruébalo en tu servidor. Aquí se aprende haciéndolo, no copiando.

Ver pista

Un print al entrar, uno tras GetPlayer (Player~=nil) y uno con la cantidad.

Escribe aquí tu solución:

¿Qué tal esta lección?