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/