Description
Bug report
Context: this issue came out of a discussion in #python on the Libera.chat IRC network, where a user wanted to peek into importlib._bootstrap
with pdb
while chasing a bug.
pdb
is capable of stepping into function calls into frozen modules, but the list
command cannot locate the source code necessary to display the source being stepped through.
# repro.py
import importlib._bootstrap
# some function call that we want to step into with pdb
importlib._bootstrap._resolve_name("os", ".", 1)
$ python3 -m pdb repro.py
> /home/snoopjedi/repro.py(2)<module>()
-> import importlib._bootstrap
(Pdb) n
> /home/snoopjedi/repro.py(5)<module>()
-> importlib._bootstrap._resolve_name("os", ".", 1)
(Pdb) s
--Call--
> <frozen importlib._bootstrap>(883)_resolve_name()
(Pdb) l
[EOF]
Note that executing source importlib._bootstrap
from the frame that calls into this module does successfully locate the source, but this isn't very useful to a user of pdb
.
I believe that bringing the frame's co_filename
into agreement with the module's __file__
would fix this issue without changes to pdb
(see #89815), but thought it would be good to track the issue with pdb
in a separate ticket since that fix is more nuanced and I think I have an interim patch for the debugger.
Your environment
- CPython versions tested on: 3.9.4, 3.11.0b3
- Operating system and architecture: Ubuntu 20.04, x86_64