You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Set sys.last_value / sys.last_exc before entering the debugger
**Background:**
In commit 6eae532, we introduced a new utility in pyflyby named `saveframe`.
This utility is designed to save error stack frames upon an exception. Users can
also enter a debugger after an exception (using ipdb.pm()) and call `saveframe`
to dump a specific frame.
`saveframe` relies on `sys.last_value` (or `sys.last_exc` in Python 3.12) to
retrieve the last exception object raised. These attributes are automatically set by
Python after an uncaught exception occurs.
**Issue:**
When a user executes a script or command using `py <some_script_or_command>` or employs
the `@debug_on_exception` decorator, the exception is caught, and the debugger is invoked.
Consequently, `sys.last_value` (or `sys.last_exc`) is not set. If the user attempts to
call `saveframe` within the debugger, it fails because the necessary exception
information is unavailable.
**Solution:**
In this commit, we modified the code to explicitly set `sys.last_value` (or `sys.last_exc`)
after an exception is caught and before entering the debugger. This ensures that users can
directly enter the debugger and successfully call the `pyflyby.saveframe` function.
Request: PyInf#12047
0 commit comments