Debug en JavaScript: encuentra el bug exacto antes de tocar código

Aprende depuración profesional con breakpoints, trazas de consola y lectura de stack trace para corregir errores con método en lugar de adivinar.

Depurar no es "probar cosas al azar": es seguir evidencia hasta encontrar la línea exacta donde la realidad se separa de lo esperado.

En esta lección vas a entrenar un método: reproducir, aislar, observar estado, confirmar hipótesis y aplicar corrección mínima.

Si aprendes este flujo ahora, avanzarás mucho más rápido en módulos complejos como fetch, formularios y Node.

Objetivo práctico: dejar de decir "no sé por qué falla" y empezar a decir "falla aquí, por este valor, en este paso".

  • Corregir sin diagnóstico es crear bugs nuevos.
  • Un bug casi siempre tiene patrón: datos inesperados, orden incorrecto o supuestos no válidos. Antes de editar código, hay que observar qué valores reales circulan.
  • Una estrategia efectiva es: reproducir error, capturar evidencia (logs/stack), acotar zona, arreglar y verificar regresión.
  • Un buen log responde una pregunta concreta.
  • No llenes la consola de ruido. Cada traza debería ayudarte a validar una hipótesis: valor esperado, tipo esperado o rama ejecutada.

Mentalidad de depuración: primero entender, luego corregir

Corregir sin diagnóstico es crear bugs nuevos.

Un bug casi siempre tiene patrón: datos inesperados, orden incorrecto o supuestos no válidos. Antes de editar código, hay que observar qué valores reales circulan.

Una estrategia efectiva es: reproducir error, capturar evidencia (logs/stack), acotar zona, arreglar y verificar regresión.

Consola inteligente: logs que realmente ayudan

Un buen log responde una pregunta concreta.

No llenes la consola de ruido. Cada traza debería ayudarte a validar una hipótesis: valor esperado, tipo esperado o rama ejecutada.

Patrón recomendado: etiqueta + datos clave + contexto de fase. Así cuando leas 50 líneas, entiendes cronología enseguida.

Breakpoints y debugger: inspección en tiempo real

Cuando un log no basta, para la ejecución y mira dentro.

Un breakpoint te permite congelar la ejecución justo antes del error para inspeccionar variables, pila de llamadas y flujo paso a paso.

`debugger` en código provoca ese mismo punto de pausa si DevTools está abierto, útil para casos puntuales en desarrollo.

  • Step over: avanza línea sin entrar en función.
  • Step into: entra dentro de la función llamada.
  • Step out: termina función actual y vuelve al llamador.

Leer stack trace sin miedo

La traza de error te dice el camino que siguió el bug.

El stack trace lista funciones desde donde se lanzó el error hasta su origen. No empieces por la última línea: busca la primera referencia a tu código de negocio.

Cuando un error nace en datos inválidos, el stack te ayuda a localizar qué función asumió algo incorrecto.

Antipatrones de depuración que debes evitar

No tapes errores: entiéndelos.

Antipatrón 1: comentar líneas al azar hasta que "funcione". Antipatrón 2: meter try/catch vacío solo para ocultar errores. Antipatrón 3: corregir síntoma sin testear casos borde.

Regla práctica: cada fix debe responder a una causa comprobada. Si no puedes explicar la causa, aún no has terminado de depurar.

JavaScript
12

Debug en JavaScript: encuentra el bug exacto antes de tocar código

Aprende depuración profesional con breakpoints, trazas de consola y lectura de stack trace para corregir errores con método en lugar de adivinar.

Código del tema: console.log · debugger · try/catch

📘 Teoría

Mentalidad de depuración: primero entender, luego corregir

Corregir sin diagnóstico es crear bugs nuevos.

Un bug casi siempre tiene patrón: datos inesperados, orden incorrecto o supuestos no válidos. Antes de editar código, hay que observar qué valores reales circulan.

Una estrategia efectiva es: reproducir error, capturar evidencia (logs/stack), acotar zona, arreglar y verificar regresión.

1

1) Reproducir

Haz que el bug aparezca de forma consistente.

  • Mismos datos
  • Mismos pasos
  • Mismo entorno
2

2) Observar

Registra estado antes de fallar.

  • console.log
  • breakpoints
  • watch variables
3

3) Aislar

Reduce el problema a la mínima parte posible.

  • Función concreta
  • Caso de entrada mínimo
  • Sin ruido externo
4

4) Verificar

Confirma que arreglaste causa, no síntoma.

  • Prueba caso original
  • Prueba caso borde
  • Revisa no romper otro flujo

Consola inteligente: logs que realmente ayudan

Un buen log responde una pregunta concreta.

1

No llenes la consola de ruido. Cada traza debería ayudarte a validar una hipótesis: valor esperado, tipo esperado o rama ejecutada.

2

Patrón recomendado: etiqueta + datos clave + contexto de fase. Así cuando leas 50 líneas, entiendes cronología enseguida.

Logs con contexto
function calcularTotal(items) {
  console.log('[calcularTotal] entrada:', items);

  let total = 0;

  for (let i = 0; i < items.length; i++) {
    const item = items[i];
    console.log('[item]', i, item);

    if (typeof item.precio !== 'number') {
      console.warn('[item inválido]', item);
      continue;
    }

    total += item.precio;
  }

  console.log('[calcularTotal] salida:', total);
  return total;
}

Breakpoints y debugger: inspección en tiempo real

Cuando un log no basta, para la ejecución y mira dentro.

Un breakpoint te permite congelar la ejecución justo antes del error para inspeccionar variables, pila de llamadas y flujo paso a paso.

`debugger` en código provoca ese mismo punto de pausa si DevTools está abierto, útil para casos puntuales en desarrollo.

  • Step over: avanza línea sin entrar en función.
  • Step into: entra dentro de la función llamada.
  • Step out: termina función actual y vuelve al llamador.
Pausa intencional
function aplicarDescuento(precio, porcentaje) {
  debugger;
  const descuento = precio * (porcentaje / 100);
  return precio - descuento;
}

console.log(aplicarDescuento(200, 15));

Leer stack trace sin miedo

La traza de error te dice el camino que siguió el bug.

1

El stack trace lista funciones desde donde se lanzó el error hasta su origen. No empieces por la última línea: busca la primera referencia a tu código de negocio.

2

Cuando un error nace en datos inválidos, el stack te ayuda a localizar qué función asumió algo incorrecto.

Error controlado con contexto
function obtenerNombre(usuario) {
  if (!usuario || !usuario.nombre) {
    throw new Error('Usuario sin nombre');
  }
  return usuario.nombre.toUpperCase();
}

try {
  console.log(obtenerNombre({}));
} catch (error) {
  console.error('[fallo obtenerNombre]', error.message);
}

Antipatrones de depuración que debes evitar

No tapes errores: entiéndelos.

1

Antipatrón 1: comentar líneas al azar hasta que "funcione". Antipatrón 2: meter try/catch vacío solo para ocultar errores. Antipatrón 3: corregir síntoma sin testear casos borde.

2

Regla práctica: cada fix debe responder a una causa comprobada. Si no puedes explicar la causa, aún no has terminado de depurar.

🧪 Aprende probando

Ejemplo Ejemplo guiado: detectar NaN en total de carrito Usa logs y validaciones para descubrir por qué el total termina en NaN.
Ejemplo Ejemplo guiado: por qué entra en la rama equivocada Depura una condición que falla por tipo inesperado recibido desde una API.
Ejemplo Demo interactiva: laboratorio de depuración guiada Provoca bugs comunes y observa pistas en consola para identificar causa raíz.

🏁 Retos

Reto Reto 1: añade trazas útiles para aislar el bug Inserta logs estratégicos para detectar por qué una suma devuelve NaN.
Reto Reto 2: corrige una condición tras depurar tipos Ajusta una condición que nunca entra por diferencia de tipo.

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .