проблема с pdb - PullRequest
       14

проблема с pdb

1 голос
/ 19 марта 2011

на оболочке django я пробовал

from django import forms
class A(forms.Form):
    x = forms.CharField()
ao = A()
import pdb 
pdb.run('ao.as_table') 

но в последнем утверждении после первого нажатия продолжения я получаю стековую трассировку как

/usr/lib/python2.6/pdb.pyc in run(statement, globals, locals)
   1218 
   1219 def run(statement, globals=None, locals=None):
-> 1220     Pdb().run(statement, globals, locals)
   1221 
   1222 def runeval(expression, globals=None, locals=None):

/usr/lib/python2.6/bdb.pyc in run(self, cmd, globals, locals)
    370             cmd = cmd+'\n'
    371         try:
--> 372             exec cmd in globals, locals
    373         except BdbQuit:
    374             pass

/usr/lib/pymodules/python2.6/IPython/FakeModule.pyc in <module>()

NameError: name 'ao' is not defined

что пошло не так? :(

Ответы [ 2 ]

4 голосов
/ 19 марта 2011

pdb.run ('print ao.as_table ()', locals ())

В основном передать словарь locals ()

3 голосов
/ 19 марта 2011

Две вещи.

  • Сначала используйте аргумент оператора в качестве вызова.то есть "ao.as_table()" с () в качестве суффикса.
  • Во-вторых, передайте аргумент ключевого слова locals=locals() в функцию.Вы также можете передать globals=globals().Не используйте locals () в качестве позиционного аргумента, так как он будет назначен глобалу, поскольку run(statement[, globals[, locals]]) принимает глобалы в качестве первого аргумента.Поэтому, если первый позиционный аргумент - locals(), он будет принят за globals во время выполнения вашего кода.

Это должно быть

pdb.run ('printao.as_table () 'locals = locals ())

...