Dump stacktrace for all threads in CrashReport

CURA-3836

This helps debugging issues like CURA-3836
This commit is contained in:
Lipu Fei 2017-05-19 14:59:22 +02:00
parent 76a9a9a9ab
commit 430508c185

View file

@ -2,6 +2,9 @@ import sys
import platform
import traceback
import webbrowser
import faulthandler
import tempfile
import os
import urllib
from PyQt5.QtCore import QT_VERSION_STR, PYQT_VERSION_STR, Qt, QCoreApplication
@ -91,6 +94,17 @@ def show(exception_type, value, tb):
crash_info = "Version: {0}\nPlatform: {1}\nQt: {2}\nPyQt: {3}\n\nException:\n{4}"
crash_info = crash_info.format(version, platform.platform(), QT_VERSION_STR, PYQT_VERSION_STR, trace)
tmp_file_fd, tmp_file_path = tempfile.mkstemp(prefix = "cura-crash", text = True)
os.close(tmp_file_fd)
with open(tmp_file_path, "w") as f:
faulthandler.dump_traceback(f, all_threads=True)
with open(tmp_file_path, "r") as f:
data = f.read()
msg = "-------------------------\n"
msg += data
crash_info += "\n\n" + msg
textarea.setText(crash_info)
buttons = QDialogButtonBox(QDialogButtonBox.Close, dialog)