相关疑难解决方法(0)

如何在Python自己的调试器(PDB)中执行多行语句

所以我正在运行一个Python脚本,在其中我通过编写调用Python的调试器PDB:

import ipdb; ipdb.set_trace()
Run Code Online (Sandbox Code Playgroud)

(iPython的PDB版本,虽然我认为它不会产生影响;我只将其用于彩色输出).

现在,当我到调试器时,我想执行多行语句,例如if子句或for循环,但是一旦我输入

if condition:
Run Code Online (Sandbox Code Playgroud)

并点击返回键,我收到错误信息 *** SyntaxError: invalid syntax (<stdin>, line 1)

如何在PDB中执行多行语句?如果不可能有一种解决方法仍然执行if子句或for循环?

python debugging multiline pdb

135
推荐指数
6
解决办法
4万
查看次数

从Python调试器列出理解范围错误

在调试我的代码时,我想使用列表理解.但是,当我在函数内部时,似乎无法从调试器中评估列表理解.

我使用的是Python 3.4.

脚本内容:

$ cat test.py 
#!/usr/bin/python

def foo():
    x = [1, 2, 3, 3, 4]

    print(x)

foo()
Run Code Online (Sandbox Code Playgroud)

交互式调试:

$ python3 -mpdb test.py                                                                                                                                           
> /tmp/test.py(3)<module>()
-> def foo():
(Pdb) step
> /tmp/test.py(8)<module>()
-> foo()
(Pdb) 
--Call--
> /tmp/test.py(3)foo()
-> def foo():
(Pdb) 
> /tmp/test.py(4)foo()
-> x = [1, 2, 3, 3, 4]
(Pdb) 
> /tmp/test.py(6)foo()
-> print(x)
(Pdb) p [x for _ in range(1)]
*** NameError: name 'x' is not defined
(Pdb) p x
[1, 2, 3, 3, …
Run Code Online (Sandbox Code Playgroud)

python debugging list-comprehension python-3.x

26
推荐指数
3
解决办法
2105
查看次数