[pyar] Explorando los frames con pdb

fisa fisadev en gmail.com
Mar Sep 14 13:05:15 ART 2010


El día 14 de septiembre de 2010 12:21, Facundo Batista
<facundobatista en gmail.com> escribió:
> Buenas!
>
> Corriendo las pruebas de unidad de un proyecto, encontré algo raro.
> Más allá de eso raro, me di cuenta que no sé explorar con pdb el
> stack.
>
> O sea, tengo este stack:
>
> (Pdb) print "\n".join(str((i, x)) for i, x in
> enumerate(inspect.getouterframes(inspect.currentframe())))
> (0, (<frame object at 0xa3f02f4>, '<stdin>', 1, '<module>', None, None))
> ...
> (11, (<frame object at 0x9fdb814>,
> '/usr/lib/python2.6/dist-packages/twisted/internet/defer.py', 125,
> 'maybeDeferred', ['        result = f(*args, **kw)\n'], 0))
> (12, (<frame object at 0x9eecacc>,
> '/usr/lib/python2.6/dist-packages/twisted/trial/unittest.py', 733,
> '_run', ['                                self.getSuppress(),
> method)\n'], 0))
> (13, (<frame object at 0x9e8097c>,
> '/usr/lib/python2.6/dist-packages/twisted/trial/unittest.py', 764,
> 'deferTestMethod', ['        d = self._run(self._testMethodName,
> result)\n'], 0))
> (14, (<frame object at 0x9fcd04c>,
> '/usr/lib/python2.6/dist-packages/twisted/internet/defer.py', 441,
> '_runCallbacks', ['                        self.result =
> callback(self.result, *args, **kw)\n'], 0))
> (15, (<frame object at 0x9e718d4>,
> '/usr/lib/python2.6/dist-packages/twisted/internet/defer.py', 249,
> 'addCallbacks', ['            self._runCallbacks()\n'], 0))
> ...
> (36, (<frame object at 0x82e78f4>, './contrib/test', 130, '<module>',
> ['    TestRunner().run(testpath, options.test, options.loops) \n'],
> 0))
>
> Entonces, yo tengo el pdb que me muestra el prompt "(Pdb)" al
> principio del stack.
>
> Puedo ver las variables de lo que vino pasando:
>
>  (Pdb) inspect.getouterframes(inspect.currentframe())[-27][0].f_locals['suppressedWarnings']
>  []
>
> Pero lo que no sé hacer es que el pdb me quede *adentro* de uno de esos frames.
>
> O sea, que estando en la situación antes descripta, yo haga:
>
>  (Pdb) <algo que no se hacer>
>  ...
>  (Pdb) suppressedWarnings
>  []
>
> Obviamente, lo quiero no solo para explorar el valor de la variable,
> sino para poder tirar cualquier expresión de Python en ese contexto.
>
> Ideas?
>
> Muchas gracias, slds.
>
> --
> .    Facundo
>
> Blog: http://www.taniquetil.com.ar/plog/
> PyAr: http://www.python.org/ar/
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>

Yo no se usar pdb pelado, pero sí se hacer eso con winpdb. Lo
probaste? Tenés el stack al lado, podés usarlo para navegar, y podés
ejecutar cosas en ese contexto.

-- 
fisa  -  Juan Pedro Fisanotti



More information about the pyar mailing list