如何调试无声崩溃

时间:2016-10-13 13:04:14

标签: python multithreading exception-handling pyqt pycharm

我有一个Python3.4和PyQt5应用程序。此应用程序与嵌入式设备通信(发送和接收一些帧)。

我有一个方法(从QThread运行)来检索设备事件(它可以是10个事件或超过600个事件)。这种方法在“释放”模式下运行良好。 但是当我使用Pycharm以“调试”模式启动程序时,它将在没有断点的情况下工作,但如果我放置一个断点,它将以退出代码0崩溃。

我有一个重试按钮来启动此过程。 因此,在发布模式下,如果我一次又一次地重试,它也会因退出代码0而失败。

此外,应用程序每次都不会在同一时刻崩溃,如果从设备读取的数据量很大,软件会提前崩溃,否则会更长。

所以我在考虑记忆,但我不能发现任何异常。 我试图在我的程序中重新引发每个异常,没有,所以我试着在我的主程序中添加一些行:

def on_exception_triggered(type_except, value, tb):
    import traceback
    trace = "".join(traceback.format_exception(type_except, value, tb))
    print("ERROR HOOKED : ", trace)
    sys.__excepthook__(type_except, value, tb)

sys.excepthook = on_exception_triggered

但它没有什么了解

1 个答案:

答案 0 :(得分:0)

实际上,你可以做的最好的事情是尝试使你的代码独立于pyqt并调试它寻找问题修复它们并与pyqt建立连接,因为否则即使你的代码工作正常,你也会得到一个接口屏幕,你不能看到发生了什么