diff --git a/Lib/bdb.py b/Lib/bdb.py index 75d6113576372e..56ddfc2cf4756b 100644 --- a/Lib/bdb.py +++ b/Lib/bdb.py @@ -33,6 +33,7 @@ def __init__(self, skip=None): self.breaks = {} self.fncache = {} self.frame_returning = None + self.botframe = None self._load_breaks() diff --git a/Lib/pdb.py b/Lib/pdb.py index ff40f7b2476a38..84102f8f50061c 100755 --- a/Lib/pdb.py +++ b/Lib/pdb.py @@ -1728,6 +1728,8 @@ def main(): print("Running 'cont' or 'step' will restart the program") t = sys.exc_info()[2] pdb.interaction(None, t) + if pdb._user_requested_quit: + break print("Post mortem debugger finished. The " + mainpyfile + " will be restarted") diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index 0724b666a3bf8d..f8b52823be41ae 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -1695,6 +1695,20 @@ def test_module_without_a_main(self): self.assertIn("ImportError: No module named t_main.__main__", stdout.splitlines()) + def test_package_without_a_main(self): + pkg_name = 't_pkg' + module_name = 't_main' + os_helper.rmtree(pkg_name) + modpath = pkg_name + '/' + module_name + os.makedirs(modpath) + with open(modpath + '/__init__.py', 'w') as f: + pass + self.addCleanup(os_helper.rmtree, pkg_name) + stdout, stderr = self._run_pdb(['-m', modpath.replace('/', '.')], "") + self.assertIn( + "'t_pkg.t_main' is a package and cannot be directly executed", + stdout) + def test_blocks_at_first_code_line(self): script = """ #This is a comment, on line 2 diff --git a/Misc/NEWS.d/next/Library/2021-06-29-21-17-17.bpo-44461.acqRnV.rst b/Misc/NEWS.d/next/Library/2021-06-29-21-17-17.bpo-44461.acqRnV.rst new file mode 100644 index 00000000000000..02e25e928b9cff --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-29-21-17-17.bpo-44461.acqRnV.rst @@ -0,0 +1 @@ +Fix bug with :mod:`pdb`'s handling of import error due to a package which does not have a ``__main__`` module \ No newline at end of file