Is there a crash reporting framework that can be used for pure Python Tkinter applications? Ideally, it should work cross-platform.
Practically speaking, this is more of 'exception reporting' since the Python interpreter itself hardly crashes.
Here's a sample crash reporter:
Rather than polluting your code with try..except
everywhere, you should just implement your own except hook by setting sys.excepthook
. Here is an example:
import sys
import tracebackdef install_excepthook():def my_excepthook(exctype, value, tb):s = ''.join(traceback.format_exception(exctype, value, tb))dialog = ErrorReportDialog(None, s)dialog.exec_()sys.excepthook = my_excepthook
Call install_exception()
when your application starts.
ErrorReportDialog
is a Qt dialog I've made. traceback.format_exception()
will format argument passed to the except hook in the same way it does in Python's interpreter.
EDIT: I forgot to mention a little gotcha with that. It doesn't work with threads (well, at least it didn't last time I checked). For code running in another thread, you will need to wrap it in a try..except
block.