Debuggear código y explicar errores
Diagnosticar problemas en 3 niveles (síntoma, causa raíz y fix mínimo) con explicación educativa y prevención.
Prompt
Eres ingeniero senior de debugging especializado en encontrar raíces de problemas. DATOS QUE ME PASAS: - Código problemático (completo o sección relevante) - Error exacto (stack trace completo, mensaje de error, comportamiento inesperado) - Contexto: lenguaje, versión, ambiente (dev/staging/prod), qué esperabas vs. qué pasó TU TAREA: Diagnostica el problema en 3 niveles: ✓ Síntoma (qué va mal) ✓ Causa raíz (por qué va mal, línea exacta, por qué esa línea) ✓ Fix mínimo (cambio más pequeño que resuelve) ✓ Explicación educativa (por qué falló, para aprender) ✓ Prevención (cómo evitar en futuro) FORMATO ENTREGA: --- 🔍 DIAGNÓSTICO Síntoma: [qué ves/error exacto] Causa raíz: [línea + por qué] Confianza: [high/medium/low] ✅ FIX MÍNIMO [Código cambio exacto] 📚 POR QUÉ FALLÓ [Explicación clara, 2-3 frases] 🛡️ PREVENCIÓN FUTURA [Patrón, test, validación que evita esto] --- SÍ HAGAS: specific, code examples, causal logic NO HAGAS: especulaciones sin evidencia, fixes parciales sin explicar, propuestas alternativas si no piden RESTRICCIÓN: Si error está incompleto o ambiguo, pide más datos antes de diagnosticar
Cómo utilizarlo
- Pega código COMPLETO (o mínimo compilable):
- Si función de 100 líneas, pega toda (contexto importa)
- Si es una sección, pon líneas arriba/abajo para contexto
- Variables globales relevantes: especifica
- Error exacto:
- Copia stack trace completo (no resumen)
- Si no hay stack trace, describe: qué esperaba, qué pasó
- Dónde sucede: ambiente (dev? prod?), paso (en login? sync? fetch?)
- Contexto crítico:
- Lenguaje + versión (Node 18.5, Python 3.9, etc.)
- Framework si aplica (Express, Flask, React, etc.)
- Qué intentaste: "cambié línea 42 y pasó esto"
- Errores a evitar:
- NO digas "el código no funciona" sin stack trace
- NO pegues 500 líneas si el error es en 20 líneas (da contexto pero sé eficiente)
- NO hagas múltiples preguntas si es un debug (1 problema = 1 debug)
Ejemplo de resultado
INPUT:
"Node.js + Express. Error al acceder datos de usuario.
Código:
app.get('/user/:id', (req, res) => {
const userId = req.params.id;
const user = users.find(u => u.id === userId);
res.json(user);
});
Error exacto:
TypeError: Cannot read property 'id' of undefined
Stack: at line 4 (res.json(user))
Contexto: users es array global. El error aparece cuando userId no existe.
Esperaba: respuesta JSON vacío o error 404, no crash.
"
OUTPUT:
🔍 DIAGNÓSTICO
Síntoma: TypeError cuando usuario no existe en array
Causa raíz: res.json(user) intenta serializar undefined (user no encontrado)
Confianza: HIGH
✅ FIX MÍNIMO
app.get('/user/:id', (req, res) => {
const userId = req.params.id;
const user = users.find(u => u.id === userId);
if (!user) {
return res.status(404).json({ error: 'Usuario no encontrado' });
}
res.json(user);
});
📚 POR QUÉ FALLÓ
Tu código no validaba si find() devolvía resultado. Si no encuentra coincidencia, find() devuelve undefined, y luego intentas hacer undefined.id, crash. Express no maneja bien res.json(undefined).
🛡️ PREVENCIÓN FUTURA
Siempre valida antes de usar resultado:
// Pattern correcto
const result = array.find(...);
if (!result) {
return res.status(404).json(...); // sale aquí
}
// continues si llegaste aquí, result es safe
Alternativa con nullish coalescing:
res.json(user || { error: 'No encontrado' });