我正在使用eclipse + pydev + python 3.4 + pyQt5.5
我有一个奇怪的问题,程序崩溃时没有追溯或任何其他消息
当我尝试编写错误生成代码时,在programm启动时执行(如MainWindow的 init 方法),我已经得到了我的标准回溯,一切正常。
但是当我把我的坏代码放入某种回调(比如连接到QPushButoon点击信号的方法)并按下该按钮时,程序崩溃但我的eclipse控制台窗口保持空白。没有追溯,没有错误信息,只是没有
你有什么建议吗?
编辑。示例代码:
对于这种类型的代码,应用程序将在启动时崩溃,我将获得回溯,一切都会好的:
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
error_producing_string
在此示例中,应用程序将在按钮单击时崩溃,但我不会收到任何错误或追溯:
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.btn = QPushButton('text', self)
self.button.clicked.connect(self.handleButton)
def handleButton(self):
error_producing_string
答案 0 :(得分:1)
好吧,PyQt在某些情况下确实会崩溃(它可能与PyDev无关)...即使在qt的回调中有异常也可能导致应用程序崩溃(所以,你真的必须小心对待qt代码)。
这里的第一件事就是打开faulthandler,看看它是否能让你找到有用的东西。如果它没有,请尝试踩到PyDev调试器,直到它崩溃,看看你是否可以从中得到一些有用的东西......如果你仍然无法得到原因,那么下一步将是调试python / PyQt的版本,并在gdb或visual c ++中进行调试。
此外,在处理PyQt时,您应该查看What are good practices for avoiding crashes / hangs in PyQt?的良好做法。