我正在尝试使用pdb调试python代码。我有一个名为c的变量,当我按c打印这个变量时,pdb会混淆并继续调试到下一个断点。如果更改变量的名称将非常困难,我怎么能避免这种混淆。
答案 0 :(得分:2)
您可以告诉pdb不使用!
前缀评估类似的内容:
>>> !c
... <value of c>
答案 1 :(得分:2)
要打印变量,请使用p
p c
将打印变量c
e.g:
>>> import pdb
>>> c = [1,2,3]
>>> pdb.set_trace()
--Return--
> <stdin>(1)<module>()->None
(Pdb) p c
[1, 2, 3]
答案 2 :(得分:1)
您的困惑是关于PDB中的各种命令。我认为它有点像MUD并且经常运作:
使用 p 打印出变量的内容(或 pp 以漂亮打印(或处理角色的基本需求)):
(Pdb) p df
Empty DataFrame
Columns: [Dist, type, Count]
Index: []
键入其中或 w 以查看您在堆栈中的位置:
(Pdb) w
-> return df[df['type']=='dev'][['Dist','Count']].as_matrix()
/home/user/core/ops.py(603)wrapper()
-> res = na_op(values, other)
> /home/user/core/ops.py(567)na_op()
-> raise TypeError("invalid type comparison")
看到那个小>
箭头?这就是我们在筹码中的位置。
使用列表或 l 环顾四周:
(Pdb) list
564 try:
565 result = getattr(x, name)(y)
566 if result is NotImplemented:
567 >> raise TypeError("invalid type comparison")
568 except (AttributeError):
569 -> result = op(x, y)
570
571 return result
572
573 def wrapper(self, other):
574 if isinstance(other, pd.Series):
要在堆栈中移动,请继续MUDing并使用向上( u )或向下( d )
使用 args ( a )来检查调用当前函数的参数:
(Pdb) args
dat = array([], shape=(0, 3), dtype=float64)
dev_classes = {81, 82, 21, 22, 23, 24, 31}
使用交互在堆栈中的当前位置输入代码。 Ctrl + D 会让您重新回到PDB。