question about pdb assignment statements

Kev Dwyer kevin.p.dwyer at gmail.com
Mon Aug 16 18:37:55 EDT 2010


On Mon, 16 Aug 2010 08:17:20 -0700, Steve Ferg wrote:

> In this little script:
> 
>  <pre>
>  import pdb
>  pdb.set_trace()
>  def main():
>      xm = 123
>      print("Hello,world!")
>  main()
>  </pre>
> 
> When I run this, I use pdb to step through it until I reach the point in
> main() where the xm variable has been initialized, and then I try to use
> pdb to reset the value of xm, and I can't.
> 
> Does anybody know why?
> 
> As I understand the documentation, 
> http://docs.python.org/library/pdb.html I *should* be able to do this.
> 
>  [!]statement
>  Execute the (one-line) statement in the context of the current stack
> frame.
> 
> Is there something about "in the context of the current stack frame"
> that I don't understand?  Or is it a bug (or a limitation) in pdb?

I think this may be the issue raised in bug 5215
(http://bugs.python.org/issue5215), committed in r71006.  Displaying a 
changed variable using the "p" command reverts the variable to its
previous value.

If you try

pdb.set_trace()
def main():
    xm = 123
    print("Hello,world!")
    print xm

and change xm before it's printed (but do not display using "p")
it seems to work as expected.

Hope that helps,

Kev







More information about the Python-list mailing list