Python - 记录一下pydebugger的BUG
Python - 记录一下pydebugger的BUG
我的Python版本:
1 |
|
只需要下面一段代码:
1 |
|
运行。这时候就会进入pydebugger模式:
1 |
|
首先介绍几个pydebugger的命令:
p {变量名}
:打印变量。例如p a
是打印变量a!{变量名} = {新值}
:设置变量的值为新值。例如!a = 2
是设置a的值为2ll
:(long list)List the whole source code for the current function or frame.s
:(step)单步执行
好了,现在我们在终端中进行debug
- 首先在终端中输入
p a
输出变量a
的值,可以得到结果:1
。这很正常,a
的值为1
- 接着在终端中输入
!a = 2
,将a
的值修改为2
- 然后在终端中输入
p a
再次打印a
的值,可以得到结果:2
。可见a
的值已经被修改为了2
- 接着在终端中输入
ll
打印当前函数f
的源码,可以得到结果:1 def f():\n2 a = 1\n...
- 最后在终端中输入
p a
再次打印a
的值,可以发现BUG出现了,我们得到了结果1
。a
的值再次变成了1
- 进一步验证,在终端中输入
s
单步执行,执行breakpoint()
函数的下一行print(a)
,可以得到结果:1
这说明pydebugger中的打印函数的longlist
将修改的a
变回了原值。
原创不易,转载请附上原文链接哦~
原文链接:https://blog.letmefly.xyz/2023/04/05/Other-Python-PydebuggerBUG
Python - 记录一下pydebugger的BUG
https://blog.letmefly.xyz/2023/04/05/Other-Python-PydebuggerBUG/