Diez B. Roggisch wrote:
Jean-Michel Pichavant wrote:
Guys,
I have some problem changing method locals with pdb:
import pdb
def test():
foo = 'foo'
pdb.set_trace()
test()
--Return--
> /home/jeanmichel/trunk/tnt/test.py(5)test()->None
-> pdb.set_trace()
(Pdb) print foo
foo
(Pdb) foo = 'bar'
(Pdb) print foo
foo
(Pdb)
I tried using locals() but it returns a copy of the locals. So changing
locals['foo'] won't do any good.
(Pdb) locals()
Out[6]: {'__return__': None, 'foo': 'foo'}
Any idea ? I'm starting to wonder if it is possible.
I recall having some issues with local variables sometimes, but actually
your example works fine for me:
def test():
foo = "foo"
import pdb; pdb.set_trace()
print foo
test()
And the session:
$ python /tmp/test.py
/tmp/test.py(9)test()
-> print foo
(Pdb) pp foo
'foo'
(Pdb) foo = "bar"
(Pdb) n
bar
--Return--
/tmp/test.py(9)test()->None
-> print foo
(Pdb) c
Diez
You're right, it can work, eventually...
Take a look at sessions below:
def test():
foo = 'foo'
pdb.set_trace()
print 'This is the test method displaying foo:', foo
In [3]: test()
> /home/jeanmichel/trunk/tnt/test.py(6)test()
-> print 'This is the test method displaying foo:', foo
(Pdb) foo='bar'
(Pdb) c
This is the test method displaying foo: bar
In [5]: test()
> /home/jeanmichel/trunk/tnt/test.py(6)test()
-> print 'This is the test method displaying foo:', foo
(Pdb) foo='bar'
(Pdb) print foo
foo
(Pdb) c
This is the test method displaying foo: foo
By just inserting the print foo statement right after changing foo's
value, I've rolled back the value to 'foo' ??? A hell of a wtf pdb feature !
JM
PS : using python 2.5
--
http://mail.python.org/mailman/listinfo/python-list