So, ipdb is the ipython version of pdb. In fact, post_mortem is a pdb function. I use ipdb because its REPL is a bit nicer to work with then pdb.
-----Original Message----- From: Stefan Ram <r...@zedat.fu-berlin.de> Subject: Re: Drop into REPL when your program crashes. Date: 09/08/2025 06:04:16 PM Newsgroups: comp.lang.python Annada Behera <annada@tilde.green> wrote or quoted: > Recently I have been increasingly adding this piece of code as > a preamble to a lot of my code. > > import (sys, os, ipdb) > > def debug_hook(exc_type, exc_value, traceback): > if exc_type is KeyboardInterrupt: > sys.__excepthook__(exc_type, exc_value, traceback) > return > print(f"Uncaught exception: {exc_type.__name__}: {exc_value}") > ipdb.post_mortem(traceback) > > if os.environ.get('DEBUG'): sys.excepthook = debug_hook Thanks! I have changed it a bit to work without "ipdb" and added demo code. import sys import os import pdb i = 1 def debug_exception_hook(exc_type, exc_value, tb): i = 2 if issubclass(exc_type, KeyboardInterrupt): # Call the default excepthook for KeyboardInterrupt to allow clean exit sys.__excepthook__(exc_type, exc_value, tb) return print(f"Uncaught exception: {exc_type.__name__}: {exc_value}") pdb.post_mortem(tb) def cause_exception(): # Function to demonstrate an unhandled exception i = 3 return 1 / 0 # Will raise ZeroDivisionError def f(): # Function to demonstrate an unhandled exception i = 4 cause_exception() return i if __name__ == "__main__": # demo code import os; os.environ['DEBUG'] = 'true' if os.environ.get('DEBUG'): sys.excepthook = debug_exception_hook print("Debug mode enabled: Using pdb post-mortem on uncaught exceptions.") else: print("Debug mode not enabled: Regular exception handling.") # Run demo to trigger exception i = 5 f() Then, I got this dialog: Debug mode enabled: Using pdb post-mortem on uncaught exceptions. Uncaught exception: ZeroDivisionError: division by zero > debug_hook.py(19)cause_exception() -> return 1 / 0 # Will raise ZeroDivisionError (Pdb) i 3 (Pdb) . -- https://mail.python.org/mailman3//lists/python-list.python.org