Skip to content

pdb cannot find source code for frozen stdlib modules#93696

@SnoopJ

Description

@SnoopJ

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.pyimportimportlib._bootstrap# some function call that we want to step into with pdbimportlib._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

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    3.10only security fixes3.11only security fixes3.12only security fixestopic-importlibtype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions