Qué es depurar un programa
Al llegar a la herencia ya habíamos construido un programa bastante grande (lección 13). Pero cualquier programa que construyas falla en algún punto. Basta una errata o una suposición equivocada. Fallar no es fracasar; pasa todo el tiempo, y encontrar y arreglar el fallo con calma se llama depurar.
Donde se detuvo es la primera pista
Cuando un programa falla, no muere en silencio: se detiene en un punto.
Y señala ese punto: "aquí, esta línea".
Ese señalamiento es la primera pista y la más valiosa. Un error te dice primero dónde se detuvo todo.
Pulsa ejecutar y los pasos se encienden uno a uno, hasta detenerse justo donde algo falló.
Se ve de un vistazo dónde se detuvo.
Luego aparece un texto en rojo en ese punto.
Mucha gente se asusta al verlo, pero en realidad está de nuestro lado.
El texto rojo es una pista, no un regaño
El texto rojo no te está regañando.
Es una nota que dice qué no pudo entender la computadora.
Suele tener dos partes: el lugar (dónde) y el tipo (qué), como "esto no es un número" o "no existe ese nombre".
Si aprendes a leerlo con calma, tienes medio problema resuelto.
Toca los trozos del mensaje y el "dónde" y el "qué" se iluminan por separado.
Si lees el mensaje dividido en "dónde" y "qué", el texto que asustaba de pronto parece amable.
Pero el punto que señala el mensaje no siempre es la causa real.
En un programa largo, ¿cómo acotas rápido la causa?
Reducir el rango a la mitad
Cuando no sabes dónde está el fallo, no lo leas todo desde el principio: mira la mitad.
¿Hasta aquí todo va bien? Entonces el fallo está en la segunda mitad; si no, está en la primera. Y vuelves a dividir.
Reduciendo a la mitad así, encuentras rápido al culpable, incluso entre muchas líneas.
Cada vez que pulsas "comprobar la mitad", el rango se reduce a la mitad según esté bien o mal.
Tras unas pocas pulsaciones, el rango se redujo a un solo punto.
Encontraste al culpable sin revisarlo todo.
Ahora que tienes la causa toca arreglarla, pero hay una trampa en la que es fácil caer.
Cambiar una sola cosa y comprobar
Que algo parezca la causa no significa que debas cambiarlo todo a la vez.
Si cambias cinco sitios al mismo tiempo, aunque se arregle no sabrás qué cambio lo logró.
Y si aparece un problema nuevo, tampoco sabrás qué lo causó.
Así que cambia una cosa, ejecútalo y observa.
Cambia un solo candidato y pulsa comprobar: la causa se aclara. Si cambias varios, no se sabe cuál lo arregló.
Al cambiar las cosas de una en una, quedó clara la causa real.
Sabes exactamente quién era el culpable, y lo arreglaste.
¿Se acabó, entonces? Falta un paso, porque "parece arreglado" y "está arreglado" no son lo mismo.
Después de arreglar, ejecuta otra vez
Creer que lo arreglaste no es el final.
Solo termina cuando lo ejecutas de nuevo y ves con tus propios ojos que pasa hasta el final.
De paso, comprueba que no se haya roto nada que antes funcionaba.
Esta vuelta de "arreglar y volver a comprobar" es la línea que separa adivinar de arreglar de verdad.
Pulsa "ejecutar de nuevo" y el programa arreglado pasa hasta el final en verde.
Ya sabemos construir (lecciones 1 a 13) y encontrar y arreglar lo que falla (lección 14).
Pero ¿cómo se convierten las palabras que escribimos en algo que una máquina ejecuta de verdad?
En la próxima lección seguiremos el camino de ese texto hasta el trabajo de la máquina.