Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Set sys.last_value / sys.last_exc before entering the debugger #380

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Commits on Nov 22, 2024

  1. 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
    Sachin Saharan committed Nov 22, 2024
    Configuration menu
    Copy the full SHA
    c892ee4 View commit details
    Browse the repository at this point in the history