Diferència entre revisions de la pàgina «Python: depuració»
(Es crea la pàgina amb «''Bug'' = "bitxo" en anglès. Depurar és el procés d'eliminar els errors del programes o ''bugs''. El [http://ca.wikipedia.org/wiki/Depurador depurador o ''debugger'']…».) |
|||
Línia 14: | Línia 14: | ||
(Pdb) list | (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". | ...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 == | ||
+ | {| class="wikitable" style="text-align: left; color: green; border: solid 1px gray;" border=grey | ||
+ | !bgcolor=gray|PDB | ||
+ | !bgcolor=gray|Eclipse | ||
+ | !bgcolor=gray|Acció | ||
+ | |- | ||
+ | |h(elp) | ||
+ | | | ||
+ | |ajuda (també es pot fer en concret per una comanda del debugger) | ||
+ | |- | ||
+ | |c , cont<br>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: | Les comandes bàsiques de l'execució son: |
Revisió del 16:56, 14 des 2012
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:
- PDB: Python debugger, funciona directament per la consola.
- Debugger en PyDev: amb interfície gràfica, facilita certes funcions.
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