gh-106670: Set convenience variable for post mortem debugging (#110493)

This commit is contained in:
Tian Gao 2023-10-09 01:17:24 -07:00 committed by GitHub
parent 0df772f555
commit 9f8282de6b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 0 deletions

View file

@ -304,6 +304,14 @@ def setup(self, f, tb):
# 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

View 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()

View file

@ -0,0 +1 @@
In :mod:`pdb`, set convenience variable ``$_exception`` for post mortem debugging.