Debugging: understanding errors instead of fearing them

How to read a stack trace, the most common errors in Java, Python and JavaScript and how to fix them, and how to use the debugger.

An error is not a failure: it is the computer telling you exactly what is wrong and where. Learning to read that message is the skill that will save you the most time in your whole programming life.

How to read a stack trace

El stack trace (traza de la pila) es la lista de llamadas que estaban activas cuando reventó el programa. Se lee de arriba abajo:

  • Primera línea: el tipo de error y un mensaje. Esto es lo que buscas en Google.
  • Líneas siguientes: el camino de llamadas. La primera que apunta a un archivo tuyo (no de una librería) es donde mirar.
  • El número de línea (Main.java:4, app.py, line 3) te lleva al sitio exacto.

The most common errors

Elige uno para ver el mensaje real, por qué pasa y cómo se arregla:

The method: divide and conquer

  1. Reproduce el error de forma fiable. Si no sabes cuándo pasa, no puedes arreglarlo.
  2. Lee el mensaje entero. De verdad. La respuesta suele estar ahí.
  3. Aísla. Comenta la mitad del código. ¿Sigue el error? Está en la otra mitad. Repite.
  4. Imprime valores. System.out.println(x), print(x), console.log(x) justo antes de la línea que falla. ¿Vale lo que crees?
  5. Un cambio cada vez. Si tocas cinco cosas y funciona, no sabes cuál era.

Quick error dictionary

The debugger

Mejor que llenar el código de print: pon un breakpoint (punto de ruptura) en una línea y el programa se para ahí. Entonces puedes:

  • ver el valor de todas las variables en ese instante,
  • avanzar línea a línea (step over / step into),
  • ver la pila de llamadas.

En VS Code: pon el ratón a la izquierda del número de línea, aparece un punto rojo, y pulsa F5. En el navegador: pestaña Sources de las DevTools (F12).

Check what you've learned