【发布时间】:2017-02-22 15:03:22
【问题描述】:
我有一个 Python3.4 和 PyQt5 应用程序。此应用程序与嵌入式设备通信(发送和接收一些帧)。
我有一个方法(从 QThread 运行)来检索设备事件(它可以是 10 个事件或超过 600 个)。此方法在“发布”模式下运行良好。 但是当我使用 Pycharm 以“调试”模式启动程序时,它可以在没有断点的情况下运行,但如果我设置断点,它将以退出代码 0 崩溃。
我有一个重试按钮来启动这个过程。 所以在发布模式下,如果我一次又一次地重试,它也会失败,退出代码为 0。
而且,应用程序不会在同一时刻每次崩溃,如果从设备读取的数据量很大,软件会更早崩溃,否则会更长。
所以我在考虑记忆,但我无法捕捉到任何异常。 我试图在我的程序中重新引发每个异常,什么都没有,所以我尝试在我的 main 中添加这些行:
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
但它什么也没抓住
【问题讨论】:
-
你使用的是什么类型的断点,你是如何配置的?
-
默认的 PyCharm 断点,我没有配置。我只需单击要放置断点的位置,然后以调试模式启动程序
-
这可能就是原因。它还可能取决于您放置断点的位置。我建议查看using breakpoints 上的 PyCharm 文档——您可以配置一个断点来暂停所有线程,或者只暂停满足断点条件的线程(条件也是可配置的)
-
这很有趣,但因为它在没有断点的发布模式下也会崩溃,我不认为就是这样。我使用的是 Python 行断点,只是尝试了一些不同的配置,它没有改变。
标签: python multithreading exception-handling pyqt pycharm