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

Reply via email to