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:
|
if last is None:
|
||||||
last = first + 10
|
last = first + 10
|
||||||
filename = self.curframe.f_code.co_filename
|
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)
|
breaklist = self.get_file_breaks(filename)
|
||||||
try:
|
try:
|
||||||
lines = linecache.getlines(filename, self.curframe.f_globals)
|
lines = linecache.getlines(filename, self.curframe.f_globals)
|
||||||
|
|
|
@ -4260,13 +4260,22 @@ def bœr():
|
||||||
mod = _create_fake_frozen_module()
|
mod = _create_fake_frozen_module()
|
||||||
mod.func()
|
mod.func()
|
||||||
"""
|
"""
|
||||||
commands = """
|
commands_list = """
|
||||||
break 20
|
break 20
|
||||||
continue
|
continue
|
||||||
step
|
step
|
||||||
|
break 4
|
||||||
list
|
list
|
||||||
quit
|
quit
|
||||||
"""
|
"""
|
||||||
|
commands_longlist = """
|
||||||
|
break 20
|
||||||
|
continue
|
||||||
|
step
|
||||||
|
break 4
|
||||||
|
longlist
|
||||||
|
quit
|
||||||
|
"""
|
||||||
with open('gh93696.py', 'w') as f:
|
with open('gh93696.py', 'w') as f:
|
||||||
f.write(textwrap.dedent(frozen_src))
|
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.py')
|
||||||
self.addCleanup(os_helper.unlink, 'gh93696_host.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
|
# verify that pdb found the source of the "frozen" function and it
|
||||||
self.assertIn('x = "Sentinel string for gh-93696"', stdout, "Sentinel statement not found")
|
# 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):
|
def test_empty_file(self):
|
||||||
script = ''
|
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