pdb: "var = value" 没有在当前函数中创建 var?
pdb: "var = value" did not create the var in current function?
参见以下示例:
[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()
中创建的,它在哪里?
这是一个pdb bug,其中对局部变量的更改在跳转后丢失。几年前就有报道,但一直没有修复。
参见以下示例:
[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()
中创建的,它在哪里?
这是一个pdb bug,其中对局部变量的更改在跳转后丢失。几年前就有报道,但一直没有修复。