gpt4 book ai didi

python - pdb/ipdb 用于可编辑条件下的 python 中断

转载 作者:IT老高 更新时间:2023-10-28 21:09:07 26 4
gpt4 key购买 nike

假设我有以下代码:

for i in range(100):
print i

一般我可以在代码中添加一行:

for i in range(100):
import ipdb;ipdb.set_trace()
print i

但是,现在我想在 i == 10 的条件下调试它,我不想在 ipdb 中键入 c 10 次,我该怎么办?

在文档中我找到了 condition bpnumber [condition],但是如果没有 bpnumber 索引列表,我怎么知道 bpnumber .文档还说 b(reak) ([file:]lineno | function) [, condition]。例如,假设 print i 的行号是 xx。我在 ipdb shell 中输入了以下内容:b xx, i == 10 但没有发生任何预期的事情。

最佳答案

我自己做了一些探索,这是我对pdb的新认识。

当您输入 import ipdb;ipdb.set_trace() 时,实际上是在行中添加了 ipdb 的入口点,而不是真正的断点。

输入ipdb后,就可以设置断点了。

所以,要实现我想要的条件调试,我应该这样做:

import ipdb;ipdb.set_trace()
for i in range(100):
print i

然后我输入ipdb后,可以输入b xx, i == 10,然后输入cr 运行代码。当条件满足时,代码将停止。

当我输入 l 时,该行的 bpnumber 显示为:

          xx-1                  for i in range(100): 
bpnumber> xx print i
xx+1 ...

不得不说,文档和所有其他的解释都非常困惑,希望我在这里的回答能够阐明“调试入口点”和“调试断点”之间的区别

关于python - pdb/ipdb 用于可编辑条件下的 python 中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17280575/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com