如何阻止PDB每次打印最后一个变量

时间:2017-10-27 09:54:53

标签: python debugging pdb

给出以下交互式会话:

$ python -c "import pdb; pdb.set_trace()"
--Return--
> <string>(1)<module>()->None
(Pdb) print "hello"
hello
(Pdb)
hello
(Pdb)
hello
(Pdb) pass
(Pdb)
(Pdb)

hello会在每个新语句上打印出来。为什么会发生这种情况?如何阻止它?

1 个答案:

答案 0 :(得分:1)

它不是“打印最后一个变量”,当你按Enter键而不指定命令或python表达式时,它会重复最后一个pdb命令。

为什么会这样?好吧,因为作者认为它可能是一个有用的捷径,所以你不必一遍又一遍地重新输入“n”或“s”。 It's actually documented FWIW:

  

输入空行会重复输入的最后一个命令。例外:如果最后一个命令是list命令,则列出接下来的11行。

至于“如何阻止它”部分,我想你必须要分叉pdb或创建自己的调试器子类,但我不明白为什么你会这样做 - 它实际上是一个相当有用的功能调试器(对于shell来说确实很烦人,但这不是我们在这里讨论的,是吗?)。