]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.13] gh-118714: Make the pdb post-mortem restart/quit behavior more reasonable...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Wed, 3 Jul 2024 19:15:53 +0000 (21:15 +0200)
committerGitHub <noreply@github.com>
Wed, 3 Jul 2024 19:15:53 +0000 (12:15 -0700)
gh-118714: Make the pdb post-mortem restart/quit behavior more reasonable (GH-118725)
(cherry picked from commit e245ed7d1e23b5c8bc0d568bd1a2f06ae92d631a)

Co-authored-by: Tian Gao <gaogaotiantian@hotmail.com>
Lib/pdb.py
Lib/test/test_pdb.py
Misc/NEWS.d/next/Library/2024-05-07-17-38-53.gh-issue-118714.XXKpVZ.rst [new file with mode: 0644]

index 87837737dcda095e3aceb70c050872ece9b25430..a42b8881f036f0048f1571dd0a201129bae74950 100755 (executable)
@@ -2460,9 +2460,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")
index 4b3557f9b0d389e22f8362ec85df5055b5130ac6..8654d8e66f7e644c6f8393b4e87b0be176839385 100644 (file)
@@ -3492,6 +3492,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)
diff --git a/Misc/NEWS.d/next/Library/2024-05-07-17-38-53.gh-issue-118714.XXKpVZ.rst b/Misc/NEWS.d/next/Library/2024-05-07-17-38-53.gh-issue-118714.XXKpVZ.rst
new file mode 100644 (file)
index 0000000..f41baee
--- /dev/null
@@ -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.