[pyar] Explorando los frames con pdb

Facundo Batista facundobatista en gmail.com
Mar Sep 14 12:21:48 ART 2010


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/



More information about the pyar mailing list