gpt4 book ai didi

python - 是否可以删除使用 ipdb.set_trace() 设置的断点?

转载 作者:IT老高 更新时间:2023-10-28 20:31:01 26 4
gpt4 key购买 nike

我在 Python 代码的某处使用了 ipdb.set_trace()。是否可以使用 IPDB 命令忽略此断点?

clear 告诉我它清除了所有断点,但是当 IPDB 偶然发现带有 ipdb.set_trace() 的行时,它再次停止。

disable 1 告诉我:No breakpoint numbered 1ignore 1 说:Breakpoint index '1' is not valid

澄清一下:当然,我可以简单地从我的源代码中删除断点。但这需要退出调试器并重新启动它。通常需要做很多工作才能到达某个地方,重新启动调试器会使生活变得更加困难。此外,如果有一个巨大的循环并且您想要检查循环中的对象,最简单的方法是在循环中直接在对象之后放置一个断点。然后我怎么能跳过循环(以及所有成千上万的调用 set_trace())并在循环之后使用 next 逐步执行代码?

最佳答案

好吧,您可以利用 Python 中的任何东西都是对象这一事实。在调试器中,您可以执行以下操作:

def f(): pass
ipdb.set_trace = f

set_trace 仍然会被调用,但它不会做任何事情。当然,它有点永久性,但你可以这样做

reload ipdb

你会恢复原来的行为。

(你为什么要这样做?当你不小心在一个经常调用的函数中放置了一个断点,而该函数通常在 try/except 下调用。一旦你意识到你在这个函数中停止了 1000 次,你尝试 ctrl- c,但是会被 try/except 捕获,然后你又回到了 ipdb。所以,如果你在低级代码中,请确保你的 set_traces 有一些上下文:

if myvar in ['some', 'sentinel', 'values']:
ipdb.set_trace()

等等

关于python - 是否可以删除使用 ipdb.set_trace() 设置的断点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19098850/

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