# Debugging

> El trabajo de detective de encontrar por qué falla un programa, y arreglarlo.

- Nivel: Básico
- Temas: Software
- URL: https://tidbit.legios.com.ar/es/debugging/
- En inglés: [Debugging](https://tidbit.legios.com.ar/debugging/)

El **debugging** (o depuración) es el proceso de rastrear un bug y arreglarlo. Lo difícil casi nunca es el arreglo en sí: es encontrar la causa. Un número equivocado en pantalla puede venir de un error de tipeo, de datos mal cargados, de dos partes del programa que no se ponen de acuerdo en una unidad, o de algo que solo pasa los martes en un huso horario.

Casi todo debugging sigue el mismo ciclo. Primero, **reproducir** el problema de forma confiable: si no podés hacer que pase a propósito, no vas a saber si lo arreglaste. Después, **acotarlo**, descartando la mitad de las posibilidades por vez hasta dar con la línea culpable. Recién ahí se arregla y se vuelve a probar, idealmente sumando una prueba automática para que el mismo bug no vuelva sin que nadie se entere.

Quienes programan tienen herramientas para esto. La más simple es imprimir valores para ver qué está haciendo de verdad el programa. Un **debugger** va más lejos: puede pausar el programa en una línea elegida (un **breakpoint**), mostrar todas las variables en ese momento y ejecutar el código paso a paso. Los logs, los reportes de error de los usuarios y hasta explicarle el problema en voz alta a un compañero, o a un patito de goma, también son parte de la caja de herramientas.

## Una analogía

Un mecánico persiguiendo un ruido raro en el auto. Primero hace que el ruido vuelva a aparecer, después revisa una pieza tras otra, descartando sospechosos, hasta que aparece el tornillo flojo.

## Para quedarse

- Encontrar la causa suele ser más difícil que escribir el arreglo.
- Reproducir, acotar, arreglar y probar que siga arreglado.
- Un debugger pausa el código en breakpoints y muestra sus valores.
- Explicar el problema en voz alta muchas veces revela la respuesta.

## Para seguir leyendo

- [Depuración de programas en Wikipedia](https://es.wikipedia.org/wiki/Depuración_de_programas)
- [Depurar JavaScript con Chrome DevTools (Chrome for Developers)](https://developer.chrome.com/docs/devtools/javascript?hl=es)

## Términos relacionados

- [Bug](https://tidbit.legios.com.ar/es/bug/): Un error en un software que hace que se comporte distinto de lo que se buscaba.
