75

我有以下python代码:

values = set([1, 2, 3, 4, 5])
import pdb
pdb.set_trace()

我运行脚本,我在调试 shell 中:

(pdb) list(values)
*** Error in argument: '(values)'
(Pdb)

如何list(values)在不调用调试器自己的list命令的情况下调用调试器?

4

5 回答 5

78

只是print它:

(Pdb) print list(values)

不要忘记为 python3 版本添加括号

(Pdb) print(list(values))
于 2012-04-25T15:52:38.547 回答
76

使用感叹号!转义调试器命令:

(Pdb) values = set([1, 2, 3, 4, 5])
(Pdb) list(values)
*** Error in argument: '(values)'
(Pdb) !list(values)
[1, 2, 3, 4, 5]
于 2012-08-23T03:05:31.143 回答
1

蒂埃里,

由于该数据结构已经是一个序列,因此将其指定为列表是多余的。所以这会很好。

(Pdb) print values

或者

(Pbd) print(values)

如果您使用的是 Python3


可选的带有换行符的漂亮列表

(Pdb) for x in values:  print x

或者

(Pdb) for x in values:  print(x)

对于 Python3

于 2012-04-25T16:04:20.533 回答
1

通过键入 进入“交互模式” interact

(Pdb) heros = ['Gecko', 'Catboy', 'Owlette']
(Pdb) list(heros)
*** Error in argument: '(heros)'
(Pdb) interact
*interactive*
>>> list(heros)
['Gecko', 'Catboy', 'Owlette']

“交互模式”还允许您处理名称与 PDB 命令冲突的变量。

于 2021-03-04T00:27:32.427 回答
0

另一种有点骇人听闻的方法是输入:

lst=list

pdb提示下。接下来你可以写:

values = set([1, 2, 3, 4, 5])
lst(values)

显然这不是推荐的答案。

于 2021-01-15T12:54:45.810 回答