gh-118714: Make the pdb post-mortem restart/quit behavior more reasonable (#118725)

This commit is contained in:
Tian Gao 2024-07-03 11:30:20 -07:00 committed by GitHub
parent f8373db153
commit e245ed7d1e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 25 additions and 3 deletions

View File

@ -2481,9 +2481,12 @@ def main():
traceback.print_exception(e, colorize=_colorize.can_colorize())
print("Uncaught exception. Entering post mortem debugging")
print("Running 'cont' or 'step' will restart the program")
pdb.interaction(None, e)
print(f"Post mortem debugger finished. The {target} will "
"be restarted")
try:
pdb.interaction(None, e)
except Restart:
print("Restarting", target, "with arguments:")
print("\t" + " ".join(sys.argv[1:]))
continue
if pdb._user_requested_quit:
break
print("The program finished and will be restarted")

View File

@ -3545,6 +3545,23 @@ def bœr():
# the file as up to date
self.assertNotIn("WARNING:", stdout)
def test_post_mortem_restart(self):
script = """
def foo():
raise ValueError("foo")
foo()
"""
commands = """
continue
restart
continue
quit
"""
stdout, stderr = self.run_pdb_script(script, commands)
self.assertIn("Restarting", stdout)
def test_relative_imports(self):
self.module_name = 't_main'
os_helper.rmtree(self.module_name)

View File

@ -0,0 +1,2 @@
Allow ``restart`` in post-mortem debugging of :mod:`pdb`. Removed restart message
when the user quits pdb from post-mortem mode.