2016-12-27 52 views
1

参见下面的例子:pdb:“var = value”没有在当前函数中创建var?

[STEP 103] # cat -n foo.py 
    1 def func(): 
    2  v = another_func() 
    3  print v 
    4 
    5 func() 
[STEP 104] # pdb foo.py 
> /root/tmp/foo.py(1)<module>() 
-> def func(): 
(Pdb) break 2 
Breakpoint 1 at /root/tmp/foo.py:2 
(Pdb) cont 
> /root/tmp/foo.py(2)func() 
-> v = another_func() 
(Pdb) v = 123   <-- manually create the var 
(Pdb) jump 3    <-- skip another_func() 
> /root/tmp/foo.py(3)func() 
-> print v 
(Pdb) next 
UnboundLocalError: "local variable 'v' referenced before assignment" 
> /root/tmp/foo.py(3)func() 
-> print v 
(Pdb) 

哪里VAR v,如果它不是在func()产生的?

+0

男人,PDB文件真的没有说清楚。 – user2357112

+0

[看起来像这可能是一个错误](http://bugs.python.org/issue22577),但它看起来并不像任何人关心回复错误报告或做任何事情。 – user2357112

+0

这是我第一次尝试'跳'跳过一些代码。 – pynexj

回答

0

这是一个pdb bug,其中局部变量的变化在跳转后丢失。几年前就有报道,但它从未得到修复。