gh-127321: Avoid stopping at an opcode without an associated line number for breakpoint() (#127457)

This commit is contained in:
Tian Gao 2024-12-01 08:57:03 -08:00 committed by GitHub
parent a880358af0
commit 1bc4f076d1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 24 additions and 0 deletions

View file

@ -438,6 +438,13 @@ class Pdb(bdb.Bdb, cmd.Cmd):
if (self.mainpyfile != self.canonic(frame.f_code.co_filename)):
return
self._wait_for_mainpyfile = False
if self.trace_opcodes:
# GH-127321
# We want to avoid stopping at an opcode that does not have
# an associated line number because pdb does not like it
if frame.f_lineno is None:
self.set_stepinstr()
return
self.bp_commands(frame)
self.interaction(frame, None)

View file

@ -2931,6 +2931,22 @@ def test_pdb_issue_gh_108976():
(Pdb) continue
"""
def test_pdb_issue_gh_127321():
"""See GH-127321
breakpoint() should stop at a opcode that has a line number
>>> def test_function():
... import pdb; pdb_instance = pdb.Pdb(nosigint=True, readrc=False)
... [1, 2] and pdb_instance.set_trace()
... a = 1
>>> with PdbTestInput([ # doctest: +NORMALIZE_WHITESPACE
... 'continue'
... ]):
... test_function()
> <doctest test.test_pdb.test_pdb_issue_gh_127321[0]>(4)test_function()
-> a = 1
(Pdb) continue
"""
def test_pdb_issue_gh_80731():
"""See GH-80731

View file

@ -0,0 +1 @@
:func:`pdb.set_trace` will not stop at an opcode that does not have an associated line number anymore.