eclipse pydev中没有回溯

Posted

技术标签:

【中文标题】eclipse pydev中没有回溯【英文标题】:No traceback in eclipse pydev 【发布时间】:2016-01-25 17:09:24 【问题描述】:

我正在使用 eclipse + pydev + python 3.4 + pyQt5.5 我有一个奇怪的问题,程序崩溃时没有回溯或任何其他消息。 当我尝试编写程序启动时执行的错误生成代码时(如 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

【问题讨论】:

【参考方案1】:

好吧,PyQt 在某些情况下确实会崩溃(它可能与 PyDev 无关)......即使在来自 qt 的回调中出现异常也可能导致应用程序崩溃(因此,您确实必须小心处理 qt 代码)。

这里的第一件事是打开故障处理程序,看看它是否能让你找到有用的东西。如果没有,请尝试单步执行 PyDev 调试器,直到它崩溃,看看您是否可以从中获得有用的信息... PyQt 并在 gdb 或 Visual c++ 中对其进行调试。

此外,您可能应该查看What are good practices for avoiding crashes / hangs in PyQt?,了解处理 PyQt 时的良好做法。

【讨论】:

尝试打开故障处理程序(-X faluthandler),仍然没有错误消息,但控制台标题现在是“ faulthandler”而不是“ main.py”。在调试视角和调试启动中,我得到了交互式控制台,但仍然没有堆栈跟踪或错误消息。 将尝试检查我的 qt 代码是否存在不良做法或安装调试版本 在调试中我注意到,当它在 init 中崩溃时,它会通过堆栈跟踪返回并将所有收集的信息发送到 stderr,但在我的按钮连接方法中它只是直接跳转到 sys.exit(app.exec_()) 如果我从 windows cmd 运行我的程序,一切正常,我可以从任何地方获得我的回溯。顺便说一句,谢谢你的回复) 嗯,你有一些我可以看到的示例代码吗?如果没有实际看到代码,很难知道会发生什么......

以上是关于eclipse pydev中没有回溯的主要内容,如果未能解决你的问题,请参考以下文章

主要功能未在 Pydev Eclipse 中执行

在 Eclipse 中缩进 python 文件(使用 pydev)

如何在 Eclipse 的 PyDev 插件中删除尾随空格

Eclipse,PyDev“未指定项目解释器”

我应该为 PyDev 下载哪个 Eclipse 包?

MyEclipse10或者eclipse中配置开发Python的Pydev插件安装教程