diff --git a/apps/common/__init__.py b/apps/common/__init__.py index 7e6320c8a7..568776767e 100644 --- a/apps/common/__init__.py +++ b/apps/common/__init__.py @@ -22,6 +22,10 @@ from .utils import validate_path from .links import (password_change_view, current_user_details, current_user_edit, about_view, license_view, admin_site, sentry) from .models import AutoAdminSingleton +from .debug import insert_pdb_exception_hook + +if getattr(settings, 'DEBUG_ON_EXCEPTION', False): + insert_import_hook() bind_links(['about_view', 'license_view'], [about_view, license_view], menu_name='secondary_menu') bind_links(['current_user_details', 'current_user_edit', 'password_change_view'], [current_user_details, current_user_edit, password_change_view], menu_name='secondary_menu') diff --git a/apps/common/debug.py b/apps/common/debug.py new file mode 100644 index 0000000000..e829421ef1 --- /dev/null +++ b/apps/common/debug.py @@ -0,0 +1,16 @@ +import sys, pdb + +previous_except_hook = None + + +def except_hook(exctype, value, traceback): + if previous_except_hook: + previous_except_hook(exctype, value, traceback) + + pdb.post_mortem(traceback) + + +def insert_pdb_exception_hook(): + previous_except_hook = sys.excepthook + sys.excepthook = except_hook +