Skip to content

Commit 7e03ae8

Browse files
[3.14] gh-149015: Fix clear_all_file_breaks for breakpoints sharing a line in bdb (GH-159748) (#159802)
gh-149015: Fix clear_all_file_breaks for breakpoints sharing a line in bdb (GH-159748) (cherry picked from commit 630920e) Co-authored-by: Tian Gao <gaogaotiantian@hotmail.com>
1 parent 992a3bf commit 7e03ae8

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
@@ -756,7 +756,7 @@ def clear_all_file_breaks(self, filename):
756756
return 'There are no breakpoints in %s' % filename
757757
for line in self.breaks[filename]:
758758
blist = Breakpoint.bplist[filename, line]
759-
for bp in blist:
759+
for bp in blist[:]:
760760
bp.deleteMe()
761761
del self.breaks[filename]
762762
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)