Inicie o pdb apenas quando uma exceção for levantada

Você sabe, a depuração em Python pode ser complicada quando você usa muitas bibliotecas ou tem uma grande base de código. Às vezes, nem sei onde colocar pdb.set_trace () e demora um pouco para descobrir qual linha exata causou o problema.

Para iniciar o pdb apenas quando a exceção é gerada (e não detectada), coloque este módulo no caminho do Python:

debug.py

import sys

def info(type, value, tb):
if hasattr(sys, 'ps1') or not sys.stderr.isatty():
# we are in interactive mode or we don't have a tty-like
# device, so we call the default hook
sys
.__excepthook__(type, value, tb)
else:
import traceback, pdb
# we are NOT in interactive mode, print the exception...
traceback
.print_exception(type, value, tb)
print
# ...then start the debugger in post-mortem mode.
pdb
.post_mortem(tb)

sys
.excepthook = info

e adicione esta linha em seu módulo principal:

import debug

Graças à segunda resposta nesta pergunta StackOverflow:
http://stackoverflow.com/questions/242485/starting-python-debugger-automatically-on-error