[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