Debuggear código: método, herramientas y copilotos de IA en 2026

Depurar es la actividad que más tiempo consume y la que menos se enseña. Los estudios clásicos de la Universidad de Cambridge ya cifraban en torno a la mitad del tiempo de programación el esfuerzo dedicado a encontrar y corregir fallos, y esa proporción no ha bajado con los años: ahora escribimos código más rápido, pero también lo desplegamos más veces y sobre sistemas más distribuidos. La diferencia entre quien resuelve un incidente en quince minutos y quien se pasa la tarde dando palos de ciego rara vez es inteligencia; casi siempre es procedimiento. Este artículo repasa ese procedimiento, las herramientas que siguen mereciendo la pena y la forma sensata de apoyarse en modelos como GPT-5.2, Claude Opus 4.5 o Gemini 3 Pro sin tragarse sus alucinaciones.

Primero reproduce, después culpa: aislar el fallo antes de tocar código

No se depura lo que no se puede reproducir. Si el error aparece una vez cada doscientas peticiones, tu trabajo no es leer el módulo entero, sino construir una reproducción fiel. Empieza capturando contexto en el momento exacto del fallo: identificador de traza, cuerpo de la petición, versión del artefacto desplegado, estado de la base de datos y condiciones de red. Sin esa fotografía, cualquier hipótesis es adivinación disfrazada de experiencia.

El segundo movimiento es reducir. Si el fallo se dispara desde un formulario web, intenta provocarlo con una llamada directa a la API. Si ocurre procesando un CSV de dos millones de líneas, recorta el fichero hasta la mínima entrada que siga rompiendo. Esa minimización suele dejar la causa a la vista. Y cuando sospechas de una regresión, git bisect es imbatible: marcas el commit bueno y el malo con git bisect start y git bisect bad, y automatizas la búsqueda con git bisect run pytest -k test_orders. En un repositorio con doscientas confirmaciones sospechosas, localizas el cambio culpable en siete u ocho pruebas en lugar de leer diffs durante horas.

Un caso real: el endpoint /api/orders devolvía un 500 en aproximadamente una de cada doscientas peticiones bajo carga. El equipo pasó dos jornadas revisando la lógica de negocio. La causa era el grupo de conexiones agotado porque una consulta concreta no tenía timeout y bloqueaba el hilo. La pista no salió de leer el controlador, sino de cruzar el identificador de traza con la métrica de conexiones activas del grupo.

Prompt
Actúa como ingeniero de software senior especializado en [lenguaje y framework]. Tengo este fallo: [descripción breve]. Stack trace: [pegar trace completo]. Entorno: [sistema operativo], versión de [runtime] [número], base de datos [motor y versión]. Devuélveme cinco hipótesis ordenadas por probabilidad y, para cada una, un experimento concreto y barato que la confirme o la descarte. No propongas ninguna corrección hasta