1. Análisis y Diseño
de Software
Pensamiento de la semana
Depuración
Departamento de Ingeniería de Sistemas Telemáticos
http://moodle.dit.upm.es
2. Depuración
“Es una tarea dolorosa
mirar a tus propios problemas y
saber
que tú mismo y nadie más los ha
provocado”
Sófocles
Ayax
Programador Pragmático - Depuración 2
3. El origen moderno del término “Bug”
9/9/1945 Grace Murray Hopper,
Madre de COBOL
Programador Pragmático - Depuración 3
4. Psicología de la Depuración (I)
● Lamentablemente, cometemos errores y hay fallos (bugs)
● Los
ordenadores aún hacen lo que les decimos que
hagan y no lo que queremos que hagan
● No
hay software perfecto: la depuración nos llevará la
mayor parte del tiempo
● Actitud de depuración:
– Reto
– No busques culpables
– Arregla el problema
– Cualquier fallo es tu problema
Programador Pragmático - Depuración 4
5. Psicología de la Depuración (II)
●Primera regla: Don’t Panic
●No les des vueltas
– pero si funcionaba hace un rato y no he
cambiado nada...
– tendría que ir...
●Busca la causa, no te quedes en los
síntomas
Programador Pragmático - Depuración 5
6. Por dónde empezar
●Antes de buscar el fallo
– Comprueba que todo está compilado
– Comprueba que no hay avisos (warnings) al
compilar
●Reproduce el fallo para tener todos los
datos del problema
Programador Pragmático - Depuración 6
7. Estrategias de depuración I
●Visualizar qué está pasando
– Emplea una herramienta de depuración
– Establece paradas (“breakpoints”) y ejecuta
paso a paso
– Visualiza valores de las variables
●Emplear trazas
– Las trazas permiten ver qué pasa antes y
después
– Ajusta los niveles de detalle de las trazas
Programador Pragmático - Depuración 7
8. Estrategias de depuración I
●Explica el problema a otra persona (o al
patito“rubber ducking”)
– Al “verbalizar”, ves qué asunciones no son
ciertas
●Proceso de Eliminación
– Antes de pensar que el fallo puede estar en
algoexterno (una biblioteca que usas, SO, ...),
– asegúrate que tu código no tiene fallos “El
Select no tiene bugs”
Programador Pragmático - Depuración 8
9. La sorpresa
●Si encuentras que el fallo es
inesperado
– Arréglalo
– Determina por qué no fue capturado
antes
• ¿Pocas pruebas unitarias?
• ¿Falta de comprobación de parámetros?
• ¿Hay más código que puede tener el mismo
fallo?
• ¿Hay pocas trazas en el código?
Programador Pragmático - Depuración 9