[python] Přístup k lokálním proměnným ve funkcích při chybě aned pdb v akci

pkosina gen2n na seznam.cz
Úterý Únor 22 11:22:28 CET 2005


Vždy, když jsem chtěl při krachu programu získat výpis proměnných z 
funkcí, zjistit v jakém stavu se nacházejí, tak jsem vkládal do funkcí 
print. Někdy jsem globalizoval. Méně často jsem pak používal interní 
debugger IDLE, protože jsem musel znovu projíždět celý program. Dají se 
sice nastavit zarážky ale není tam ta interaktivita, možnost výpisu 
proměnných různými způsoby.

Až "včera" jsem objevil *pdb*. Pythonýrský vestavěný řádkový debugger. 
Na začátek programu dám import pdb a pak když zhavaruje program (nebo ho 
pomocí úmyslné chyby zastavím sám), tak se napíše pdb.pm() a člověk se 
dostane přímo dovnitř poslední funkce a může vypisovat proměnné! Co víc 
- já se mohu pohybovat po nadřazených funkcích a bez problému vypisovat 
jejich proměnné, které nejsou "vidět" v ostatních funkcích!!

Objevil jsem jistě dávno objevené, přesto mi to nedalo, abych to sem 
nenapsal, protože to může spoustě lidem ušetřit spoustu práce. To je 
přesně ten způsob, který jsem dávno hledal a kterým bych se dostal do 
žaludků funkcí i tříd, a mohl konverzovat přímo s jejich vnitřními 
proměnnými.

Na co jsem nepřišel:

* nejde náhodou přímo opravit "špatnou" proměnnou a pustit program dále?
* nepodařilo se mi udělat "dvouřádkový výpis", protože po prvním enteru 
to hned píše chybu, např:
for i in range:  # zde to již hází chybu
  print i
* má někdo ještě něco lepšího?


Pavel


-- 
gen2n  
ICQ 176015287




Další informace o konferenci Python