Diagnóstico de errores (bug) paso a paso
Analiza un mensaje de error y el código relacionado para proponer hipótesis de causa raíz ordenadas, convirtiendo el debugging en un proceso metódico en lugar de prueba y error a ciegas.
Actúa como ingeniero de software senior haciendo debugging en producción. Tengo el siguiente error: [PEGA EL MENSAJE DE ERROR Y STACK TRACE COMPLETO]. Este es el código relacionado: [PEGA EL CÓDIGO]. Contexto adicional: [CUÁNDO OCURRE EL ERROR, SI ES CONSISTENTE O INTERMITENTE]. Propón 3 hipótesis ordenadas de más a menos probable sobre la causa raíz, y para cada una indica: qué comprobación haría para confirmarla o descartarla, y qué comando o log específico revisaría primero.
Caso de uso
Depuración de software
Pedir hipótesis ordenadas en vez de la solución directamente es clave: los modelos de IA a veces sugieren un arreglo que enmascara el síntoma sin resolver la causa raíz. Pedir también la comprobación para cada hipótesis convierte el debugging en un proceso metódico en lugar de prueba y error.
Por qué funciona esta estructura
La técnica central de este prompt es replicar el método científico aplicado a debugging: generar varias hipótesis plausibles, ordenarlas por probabilidad, y para cada una definir un experimento concreto que la confirme o la descarte. Esto evita el patrón más común y menos eficiente de debugging, que es probar cambios al azar en el código esperando que alguno funcione, sin entender realmente qué estaba fallando.
Antes vs. después
Antes: pegar solo el mensaje de error TypeError: cannot read property of undefined y pedir arréglalo suele producir una solución genérica que añade una validación defensiva sin identificar por qué el valor llegaba undefined en primer lugar, lo que puede enmascarar un problema más profundo.
Después: con el código y contexto completo, el modelo puede proponer como hipótesis principal que una llamada asíncrona no ha terminado cuando se accede al dato, como segunda hipótesis que la API externa está devolviendo una estructura distinta a la esperada, y como tercera que existe una condición de carrera en el estado del componente, cada una con un log específico que revisar para confirmar cuál es la real.
Variaciones útiles
- Para errores en producción con usuarios afectados: pide que priorice primero una hipótesis de mitigación rápida (rollback, feature flag) separada del análisis de causa raíz completo.
- Para bugs recurrentes del mismo tipo: pregunta también si existe un patrón de diseño que prevendría este tipo de error en el futuro, no solo el fix puntual.
- Para equipos que documentan post-mortems: pide que una vez confirmada la causa, genere un resumen en formato post-mortem con causa raíz, impacto y acción preventiva.
Qué IA usar
ChatGPT con capacidad de ejecución de código es especialmente útil cuando puedes aportar un caso mínimo reproducible, ya que puede probar las hipótesis directamente. Claude destaca en el razonamiento sobre bugs complejos que involucran múltiples archivos o sistemas interconectados, gracias a su capacidad de mantener mucho contexto de código a la vez.
Publicidad
Conclusión
El debugging asistido por IA funciona mejor como generador de hipótesis a validar, no como oráculo que da la respuesta correcta a la primera. Trata cada hipótesis como una pista a comprobar, no como un diagnóstico definitivo, y el proceso será mucho más rápido que probar soluciones al azar.
Preguntas frecuentes
Explora más prompts en Programación y código o revisa nuestras guías de prompt engineering.
Prompts relacionados
Revisor de código con buenas prácticas
PremiumPide una revisión de código detallada señalando bugs, riesgos y mejoras de legibilidad. Funciona como un segundo par de ojos disponible en cualquier momento, útil tanto para revisiones rápidas como para preparar código antes de un pull request.
Generador de tests unitarios
Genera casos de prueba unitarios para una función, incluyendo casos límite habitualmente olvidados como valores nulos, vacíos o extremos que el camino feliz suele pasar por alto.
Documentación de función de código
Genera documentación clara (docstring/JSDoc) para una función a partir de su código, incluyendo parámetros, tipo de retorno y un ejemplo de uso listo para copiar.