mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
gh-93696: Fixed the breakpoint display error for frozen modules (#132862)
This commit is contained in:
parent
0a387b311e
commit
eef49c3595
3 changed files with 19 additions and 10 deletions
|
@ -1971,12 +1971,6 @@ class Pdb(bdb.Bdb, cmd.Cmd):
|
|||
if last is None:
|
||||
last = first + 10
|
||||
filename = self.curframe.f_code.co_filename
|
||||
# gh-93696: stdlib frozen modules provide a useful __file__
|
||||
# this workaround can be removed with the closure of gh-89815
|
||||
if filename.startswith("<frozen"):
|
||||
tmp = self.curframe.f_globals.get("__file__")
|
||||
if isinstance(tmp, str):
|
||||
filename = tmp
|
||||
breaklist = self.get_file_breaks(filename)
|
||||
try:
|
||||
lines = linecache.getlines(filename, self.curframe.f_globals)
|
||||
|
|
|
@ -4260,13 +4260,22 @@ def bœr():
|
|||
mod = _create_fake_frozen_module()
|
||||
mod.func()
|
||||
"""
|
||||
commands = """
|
||||
commands_list = """
|
||||
break 20
|
||||
continue
|
||||
step
|
||||
break 4
|
||||
list
|
||||
quit
|
||||
"""
|
||||
commands_longlist = """
|
||||
break 20
|
||||
continue
|
||||
step
|
||||
break 4
|
||||
longlist
|
||||
quit
|
||||
"""
|
||||
with open('gh93696.py', 'w') as f:
|
||||
f.write(textwrap.dedent(frozen_src))
|
||||
|
||||
|
@ -4275,9 +4284,14 @@ def bœr():
|
|||
|
||||
self.addCleanup(os_helper.unlink, 'gh93696.py')
|
||||
self.addCleanup(os_helper.unlink, 'gh93696_host.py')
|
||||
stdout, stderr = self._run_pdb(["gh93696_host.py"], commands)
|
||||
# verify that pdb found the source of the "frozen" function
|
||||
self.assertIn('x = "Sentinel string for gh-93696"', stdout, "Sentinel statement not found")
|
||||
|
||||
# verify that pdb found the source of the "frozen" function and it
|
||||
# shows the breakpoint at the correct line for both list and longlist
|
||||
for commands in (commands_list, commands_longlist):
|
||||
stdout, _ = self._run_pdb(["gh93696_host.py"], commands)
|
||||
self.assertIn('x = "Sentinel string for gh-93696"', stdout, "Sentinel statement not found")
|
||||
self.assertIn('4 B', stdout, "breakpoint not found")
|
||||
self.assertIn('-> def func():', stdout, "stack entry not found")
|
||||
|
||||
def test_empty_file(self):
|
||||
script = ''
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Fixed the breakpoint display error for frozen modules in :mod:`pdb`.
|
Loading…
Add table
Add a link
Reference in a new issue