Debug
Què fer quan el programa no fa el que esperaves, i com convertir cada error en una cosa que ja sabràs reconèixer.
Introducció
Tots els programes tenen errors.
No és una cosa que passi als que comencen: passa sempre, i trobar-los és bona part de la feina de programar.
Un error és una diferència entre el que el programa fa i el que tu esperaves que fes.
Fixa’t que en aquesta frase hi ha dues coses, no una.
Hi ha el que fa el programa, que el pots mirar, i hi ha el que tu esperaves, que només existeix dins del teu cap fins que l’escrius.
Per això la primera feina no és tocar el codi. És escriure les dues.
Comprova el que és evident
Abans de res, la llista curta. Un error de cada tres és aquí:
- Has desat el fitxer?
- Estàs executant el fitxer que et penses?
- Has escrit bé el nom?
fowrardno ésforward. - Falta un
:al final de l’ifo delwhile? - El sagnat és el que vols? Recorda l’
i += 1de Iteració. - Has escrit una
Oon volies un0, o unalon volies un1?
Si res d’això no és, llavors sí que val la pena pensar.
Descriu el problema
Digue-ho en veu alta, com si l’hi expliquessis a algú.
Volia que dibuixés tres graons i n’ha dibuixat un de sol.
Sembla una tonteria i és la tècnica que més errors resol.
Mentre ho expliques has de dir què esperaves, i moltes vegades te n’adones a la meitat de la frase.
Fes que torni a passar
Si no pots repetir l’error, no el pots arreglar.
I si el pots repetir, ja en tens la meitat: saps exactament amb quines dades passa.
Redueix el programa fins que quedi el mínim que encara falla.
Cada línia que treus i que no canvia res és una línia que no era el problema.
Fes de màquina
És el que ja vas fer a Seqüència amb la traça: agafa paper i executa el programa tu, línia per línia, apuntant què val cada variable.
Ho fas malament i ho fas lent, però ho fas de veritat, i la màquina no té imaginació: fa el que hi diu, no el que volies dir.
Quan la teva traça i el programa deixin de coincidir, ja saps a quina línia és.
Fes que el programa parli
Un print a mitja funció és l’eina de depuració més antiga que hi ha, i encara és bona.
return + / 2
average called with 10 and 20
20.0Estàs llegint una vista prèvia.
Inicia sessió amb Google per llegir la pàgina completa.
Inicia sessió amb GoogleAmb qualsevol compte de Google. Només et demanarem que acceptis les condicions del servei.