【发布时间】:2012-03-19 20:56:35
【问题描述】:
我在GET 请求中设置了pdb 跟踪。我想打印请求对象的所有属性。我正在 pdb 中尝试以下操作:
(Pdb) request
<GET /foo HTTP/1.1>
(Pdb) for d in dir(request):
*** SyntaxError: unexpected EOF while parsing (<stdin>, line 1)
我确信这里缺少一些基本的东西。
【问题讨论】:
我在GET 请求中设置了pdb 跟踪。我想打印请求对象的所有属性。我正在 pdb 中尝试以下操作:
(Pdb) request
<GET /foo HTTP/1.1>
(Pdb) for d in dir(request):
*** SyntaxError: unexpected EOF while parsing (<stdin>, line 1)
我确信这里缺少一些基本的东西。
【问题讨论】:
在 pdb 提示符下,执行以下操作:
(Pdb) a = [1, 2, 3, 4]
(Pdb) for i in a:
*** SyntaxError: unexpected EOF while parsing (<stdin>, line 1)
(Pdb) import code
(Pdb) code.interact(local=locals())
>>> for i in a:
... print i
...
1
2
3
4
【讨论】:
您不能在pdb 中输入多行语句。不过,您可以使用commands 命令if 代码块将在断点处执行; help commands 了解更多信息。
您有时也可以将多行语句合并为一行。例如:
for d in dir(request): print d
不过,在您的特定情况下,print dir(request) 或 pp dir(request) 似乎就足够了。
【讨论】:
python repl 的工作方式相同。
这是一个老问题,但有一个更新的 Python 调试器,名为 ipdb。
它允许拥有制表符补全、颜色支持和魔术功能以及pdb 的所有原始功能。
它允许多行for loops。
【讨论】: