Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #197557

Drop into REPL when your program crashes.

From Annada Behera <annada@tilde.green>
Newsgroups comp.lang.python
Subject Drop into REPL when your program crashes.
Date 2025-09-08 16:37 +0530
Organization tilde.green
Message-ID <7a0dbcc10639dce0c40a6c4b3972f19bde2fc14e.camel@tilde.green> (permalink)

Show all headers | View raw


Hi,

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

This has been extemely helpful when debugging and even in prod. When
degugging, this helps me go up and down my backtrace like I am in gdb.
In fact, it is better than gdb. I can use evaluate any python expression
directly, and verify the shape of my tensors and exactly what caused
the error. It's like freezing the entire program right at the time the
program failed. This way I don't have to second guess what exactly
failed in the entire training loop and the next time I can fix it.

    if True or os.environ.get('DEBUG'): sys.excepthook = debug_hook

Even when not debugging, it helps me salvage the results if a 3 week
running experiment fails at 90% completion.

    Annada

Back to comp.lang.python | Previous | NextNext in thread | Find similar


Thread

Drop into REPL when your program crashes. Annada Behera <annada@tilde.green> - 2025-09-08 16:37 +0530
  Re: Drop into REPL when your program crashes. ram@zedat.fu-berlin.de (Stefan Ram) - 2025-09-08 12:34 +0000
    Re: Drop into REPL when your program crashes. Annada Behera <annada@tilde.green> - 2025-09-09 11:53 +0530
  Re: Drop into REPL when your program crashes. Ethan Carter <ec1828@somewhere.edu> - 2025-09-08 21:21 -0300

csiph-web