Tema 10 · Debugging

10. Depuración Asistida: Cómo Alimentar Stack Traces y Encontrar la Causa Raíz

Estrategias para presentar errores 500, excepciones de base de datos y bugs en frontend aislando el Ejemplo Mínimo Reproducible (MRE).

La IA como Detective de Errores (Root Cause Analysis)

La depuración es una de las tareas donde la Inteligencia Artificial ofrece el mayor retorno de inversión en tiempo. Un error que a un programador junior le tomaría dos horas de búsqueda en foros, la IA suele diagnosticarlo en menos de 15 segundos si se le proporciona la información correcta.

El error más común de los desarrolladores es pegar únicamente el mensaje genérico: "me sale error 500" o "no funciona". La IA no tiene ojos en tu pantalla; necesita ver el Stack Trace completo y el Ejemplo Mínimo Reproducible (MRE).

Los 4 Elementos de un Prompt de Depuración Perfecto

  1. El Stack Trace Completo: Archivo exacto, número de línea y jerarquía de llamadas que provocó la excepción.
  2. El Fragmento de Código Problemático: Las 15 a 25 líneas circundantes a la línea del fallo.
  3. El Valor de las Variables en ese Instante: Qué contenían los argumentos cuando falló (ej: ¿la variable era null, un array vacío o un string malformado?).
  4. El Comportamiento Esperado: Qué se suponía que debía ocurrir.

⚡ Estructura Profesional para Depurar Excepciones en Backend

Plantilla para presentar un fallo de servidor o base de datos a la IA solicitando hipótesis ordenadas por probabilidad.

debug-prompt.md
Solo lectura
# Solicitud de Depuración Asistida (Kilopolis)

Tengo un error 500 en producción al procesar el webhook de pagos.

## 1. Stack Trace del Error (logs de php_error.log):
```
Fatal error: Uncaught TypeError: Unsupported operand types: string * int
in /var/www/kilopolis.com/app/controllers/PaymentWebhookController.php on line 58
Stack trace:
#0 /var/www/kilopolis.com/app/core/Router.php(42): PaymentWebhookController->handle()
#1 /var/www/kilopolis.com/public/index.php(18): Router->dispatch()
```

## 2. Código Circundante (Líneas 50 a 65):
```php
54: $payload = json_decode(file_get_contents('php://input'), true);
55: $montoTotal = $payload['data']['amount_in_cents'] ?? 0;
56: $tasaCambio = env('USD_COP_RATE', 4000);
57: 
58: $totalCop = $montoTotal * $tasaCambio;
59: $this->guardarTransaccion($totalCop);
```

## 3. Carga Útil Recibida (Payload JSON del Webhook):
```json
{
  "event": "transaction.updated",
  "data": {
    "amount_in_cents": "150000"
  }
}
```

## INSTRUCCIÓN:
1. Explica la causa raíz exacta del fallo en una frase.
2. Dame la solución idiomática en PHP 8.3 con tipado estricto para que nunca vuelva a fallar si la pasarela envía el monto como string o como int.
🧠
Mini-Quiz de Retención
Comprueba tu comprensión antes de pasar a la siguiente lección
1 Pregunta
Pregunta 1
¿Por qué es fundamental incluir el valor real de las variables de entrada al pedirle a una IA que diagnostique un error de código?
🦉
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.

🚀 ¿Quieres dominar IA como Copiloto: Aprendizaje & Desarrollo Web y crear proyectos reales?

Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.

🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.