]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-106670: Set convenience variable for post mortem debugging (#110493)
authorTian Gao <gaogaotiantian@hotmail.com>
Mon, 9 Oct 2023 08:17:24 +0000 (01:17 -0700)
committerGitHub <noreply@github.com>
Mon, 9 Oct 2023 08:17:24 +0000 (08:17 +0000)
Lib/pdb.py
Lib/test/test_pdb.py
Misc/NEWS.d/next/Library/2023-10-07-00-18-40.gh-issue-106670.kCGyRc.rst [new file with mode: 0644]

index fd62d246f124abe15154bea6641b87e116df50cf..2cbd6f6746773fbe1281888c547ac2e5753f7c95 100755 (executable)
@@ -304,6 +304,14 @@ class Pdb(bdb.Bdb, cmd.Cmd):
         # cache it here to ensure that modifications are not overwritten.
         self.curframe_locals = self.curframe.f_locals
         self.set_convenience_variable(self.curframe, '_frame', self.curframe)
+
+        if self._chained_exceptions:
+            self.set_convenience_variable(
+                self.curframe,
+                '_exception',
+                self._chained_exceptions[self._chained_exception_index],
+            )
+
         return self.execRcLines()
 
     # Can be executed earlier than 'setup' if desired
index 8fed1d0f7162fd4aff4b72835b3e39824d4dfe27..b1652e993b8a0100852fa30156c5d30d5ea279ad 100644 (file)
@@ -859,9 +859,11 @@ def test_post_mortem_chained():
     >>> with PdbTestInput([  # doctest: +ELLIPSIS, +NORMALIZE_WHITESPACE
     ...     'exceptions',
     ...     'exceptions 0',
+    ...     '$_exception',
     ...     'up',
     ...     'down',
     ...     'exceptions 1',
+    ...     '$_exception',
     ...     'up',
     ...     'down',
     ...     'exceptions -1',
@@ -882,6 +884,8 @@ def test_post_mortem_chained():
     (Pdb) exceptions 0
     > <doctest test.test_pdb.test_post_mortem_chained[0]>(3)test_function_2()
     -> 1/0
+    (Pdb) $_exception
+    ZeroDivisionError('division by zero')
     (Pdb) up
     > <doctest test.test_pdb.test_post_mortem_chained[1]>(3)test_function_reraise()
     -> test_function_2()
@@ -891,6 +895,8 @@ def test_post_mortem_chained():
     (Pdb) exceptions 1
     > <doctest test.test_pdb.test_post_mortem_chained[1]>(5)test_function_reraise()
     -> raise ZeroDivisionError('reraised') from e
+    (Pdb) $_exception
+    ZeroDivisionError('reraised')
     (Pdb) up
     > <doctest test.test_pdb.test_post_mortem_chained[2]>(5)test_function()
     -> test_function_reraise()
diff --git a/Misc/NEWS.d/next/Library/2023-10-07-00-18-40.gh-issue-106670.kCGyRc.rst b/Misc/NEWS.d/next/Library/2023-10-07-00-18-40.gh-issue-106670.kCGyRc.rst
new file mode 100644 (file)
index 0000000..3a06616
--- /dev/null
@@ -0,0 +1 @@
+In :mod:`pdb`, set convenience variable ``$_exception`` for post mortem debugging.