Browse Source

Dump stacktrace for all threads in CrashReport

CURA-3836

This helps debugging issues like CURA-3836
Lipu Fei 7 years ago
parent
commit
a386e6d867
1 changed files with 14 additions and 0 deletions
  1. 14 0
      cura/CrashHandler.py

+ 14 - 0
cura/CrashHandler.py

@@ -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)