crash.py 883 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import argparse
  2. import cgitb
  3. import sys
  4. import time
  5. from IPython.core import ultratb
  6. from .mod import modfunc
  7. def one():
  8. modfunc(two) # aaa
  9. def two():
  10. three(42)
  11. def three(x):
  12. raise RuntimeError('Kaboom! I\'m dead: {}'.format(x))
  13. def main():
  14. hooks = {
  15. 'default': lambda: sys.excepthook,
  16. 'cgitb': lambda: cgitb.Hook(format='text'),
  17. 'ultratb_color': lambda: ultratb.ColorTB(ostream=sys.stderr),
  18. 'ultratb_verbose': lambda: ultratb.VerboseTB(ostream=sys.stderr),
  19. }
  20. parser = argparse.ArgumentParser()
  21. parser.add_argument('hook', choices=sorted(hooks), default='default')
  22. args = parser.parse_args()
  23. sys.excepthook = hooks[args.hook]()
  24. print('__name__ =', __name__)
  25. print('__file__ =', __file__)
  26. time.time = lambda: 1531996624.0 # Freeze time
  27. sys.executable = '<traceback test>'
  28. one()