Python: depuració

De Cacauet Wiki
Salta a la navegació Salta a la cerca

Bug = "bitxo" en anglès. Depurar és el procés d'eliminar els errors del programes o bugs.

El depurador o debugger és l'eina que utilitzem per córrer (run) el programa en un entorn controlat, permetent examinar el comportament del programa pas a pas i consultar les variables internes en qualsevol moment.

Per Python utilitzarem:

El principal procediment és inserir breakpoints en el nostre codi. El breakpoint aturarà l'execució del programa i ens farà entrar en mode interactiu per la consola. Podem consultar informació diversa del nostre programa com les variables, el stack trace o la línia de codi on estem.

El PDB solem utilitzar-ho inserint els breakpoints en el nostre codi en mode hardcoded:

import pdb; pdb.set_trace()

Per exemple amb:

(Pdb) list

...ens sortirà el codi i marcarà la línia on estem. La comanda "list" també es pot fer de forma curta amb "l".

Comandes bàsiques del debugger

PDB Eclipse Acció
h(elp) ajuda (també es pot fer en concret per una comanda del debugger)
c , cont
o continue
resume avancem fins els següent breakpoint
s(tep) step into avancem una instrucció, entrant a les funcions que es cridin.
n(ext) step over avancem una instrucció, sense entrar a les funcions.
r(eturn) step return avancem fins que la funció acaba (return).
l(ist) GUI* llista el codi que s'està executant ara (i marca l'actual posició)
w(ere) GUI* imprimeix la stack trace
  • = funcions integrades en el GUI, visibles en tot moment (Eclipse).

Les comandes bàsiques de l'execució son:

  • h(elp) : ajuda (també es pot fer en concret per una comanda del debugger)
  • s(tep) : avancem una instrucció, entrant a les funcions que es cridin.
  • n(ext) : avancem una instrucció, sense entrar a les funcions.
  • c , cont o continue : avancem fins els següent breakpoint
  • r(eturn) : avancem fins que la funció acaba (return).
  • l(ist) : llista el codi que s'està executant ara (i marca l'actual posició)
  • w(ere) : imprimeix la stack trace