Python: depuració

De Cacauet Wiki
Dreceres ràpides: navegació, 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[modifica]

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(here) 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(here) : imprimeix la stack trace