为什么当调试器转到另一个文件时我的 pdb 断点消失了?

Why do my pdb breakpoints disappear when the debugger goes to another file?

我想我知道这是怎么发生的,但我只想知道为什么会这样。

我无意中发现,每次调用pdb.set_trace()时,它似乎都清除了我设置的所有断点。我只是想知道为什么会这样。我找不到关于 Google 的任何解释。我已经设置了几个断点,但在调试的中途我发现它们都消失了。直到我 运行 一个包含 2 个 pdb.set_trace() 语句的简单脚本,我才注意到如果我 运行 pdb.set_trace(),断点似乎被删除了。希望有人能给我解释一下。

示例伪代码:

import pdb
pdb.set_trace()
print (a)
print (b)
print (c)
print (d)
pdb.set_trace()
print (e)
print (f)
  1. 在print(a)处,我为line print(c)和line设置了一个断点 (打印 f).
  2. 我点击 'b' 以便它显示我的断点(这两个 有吗)
  3. 我点击 'c' 让它继续,直到打印出来 (c),它停止的地方。我再次检查,2 个断点仍然存在 在那里我点击 'c' 然后它继续直到它到达第二个 pdb.set_trace().
  4. 此时我再次检查时,我有 0 断点。

在尝试了更多之后,似乎每次我在我的脚本中执行 pdb.set_trace() 时,它都会重置脚本中的断点,这就是它们像这样消失的原因。如果我的脚本中只有 1 pdb.set_trace() 行,断点似乎一直持续到脚本执行结束,所以我会更加注意,不要在其中放置多个 pdb.set_trace() 语句调试时我的脚本。