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.
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)
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
# 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/3Lees 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.
Completa el print de depuración condicional para que solo salga cuando Config.Debug está activo.
Config.Debug = truelocal function dbg(...) if Config.Debug then ('[mi_banco]', ...) endendPista
La función básica de Lua para escribir en consola.
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:
