Skip to content

Commit 630920e

Browse files
gh-149015: Fix clear_all_file_breaks for breakpoints sharing a line in bdb (#159748)
1 parent 6297f8d commit 630920e

3 files changed

Lines changed: 14 additions & 1 deletion

File tree

‎Lib/bdb.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -747,7 +747,7 @@ def clear_all_file_breaks(self, filename):
747747
return 'There are no breakpoints in %s' % filename
748748
for line in self.breaks[filename]:
749749
blist = Breakpoint.bplist[filename, line]
750-
for bp in blist:
750+
for bp in blist[:]:
751751
bp.deleteMe()
752752
del self.breaks[filename]
753753
return None

‎Lib/test/test_bdb.py‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -965,6 +965,17 @@ def main():
965965
with TracerRun(self) as tracer:
966966
tracer.runcall(tfunc_import)
967967

968+
def test_clear_all_file_breaks_same_line(self):
969+
reset_Breakpoint()
970+
self.addCleanup(reset_Breakpoint)
971+
debugger = Bdb()
972+
for _ in range(3):
973+
self.assertIsNone(debugger.set_break(__file__, 1))
974+
self.assertIsNone(debugger.clear_all_file_breaks(__file__))
975+
self.assertEqual(debugger.get_all_breaks(), {})
976+
self.assertEqual(_bdb.Breakpoint.bplist, {})
977+
self.assertTrue(all(bp is None for bp in _bdb.Breakpoint.bpbynumber))
978+
968979
def test_clear_at_no_bp(self):
969980
self.expect_set = [
970981
('line', 2, 'tfunc_import'), ('clear', (__file__, 1))
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Fix :meth:`bdb.Bdb.clear_all_file_breaks` leaving breakpoints behind when
2+
multiple breakpoints are set on the same line.

0 commit comments

Comments
 (0)