accessing local variables from the pdb debugger

Diez B. Roggisch deets at nospam.web.de
Thu Dec 10 08:04:08 EST 2009


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



More information about the Python-list mailing list