【问题标题】:PyQt5 fails with cryptic messagePyQt5 失败并显示神秘消息
【发布时间】:2017-08-19 17:25:53
【问题描述】:

我创建了带有模型和视图的小应用程序。从一开始,PyQt5 每次出现问题时都会崩溃
Process finished with exit code -1073740791 (0xC0000409)
它非常神秘。我不知道哪个组件失败了。有一段时间我可以通过调试来解决这个问题,但是失败了,我不知道是什么。

如何从 PyQt5 获取调用堆栈?如何获得更详细的崩溃消息?

Python 3.6.1 PyQt5 5.8.1 PyCharm

【问题讨论】:

  • 您的计算机使用 NVIDIA 卡?此错误与硬件有关。
  • 我有两张显卡 - HD Graphics 530 和 NVIDIA Geforce 940MX。带有驱动程序 21.21.13.7654/376.54 的 NVidia。
  • 将您的 NVIDIA 驱动程序回滚到版本 376.33。看我的回答。
  • 向下滚动后 - 显示从 Nvidia 切换到 Intel。目前我正试图让它再次使用 Nvidia。但是 - 在据称英特尔上运行应用程序也失败并显示相同的神秘消息。 Nvidia 改为更新到 379.09。
  • 切换到 Intel 将不起作用。您应该回滚到版本 376.33 或更新到最新版本。硬件冲突时会出现此问题。从 NVIDIA 卡切换到 Intel 无法解决您的问题。

标签: python qt5 pyqt5


【解决方案1】:

设法通过将您的 NVIDIA 驱动程序 回滚到以前的版本来修复它。我使用的是 378.49 版本并切换回 376.33,现在一切正常。无论您的显卡如何,您都可以尝试一下。

GTX 965M为例:

进入设备管理器 -> 显示适配器 -> NVIDIA GeForce GTX 965M (右键单击)-> 属性-> 驱动程序选项卡-> 回滚驱动程序。

注意:

有一个新版本的 Nvidia 驱动程序 (378.66)。 与 guru3d 的驱动程序相比 - 您拥有来自原始供应商的驱动程序和最新的修复程序。 :)

我已经在我的笔记本电脑上测试过这个版本(GeForce GTX 960M)。

它以环境控制台上的退出代码 0 开始、工作和结束。 现在好像没事了。

以下是 Nvidia 自他们的驱动程序的错误 (378.49) 版本以来发生的变化:

(取自http://us.download.nvidia.com/Windows/378.66/378.66-win10-win8-win7-notebook-release-notes.pdf,第 15 页)

更新:

我也处理过同样的问题,答案是双重的:

  1. 崩溃的原因可能有很多。这可能是一个编程错误,调用了一个不存在的函数,传递了一个小部件而不是布局等。但是由于您没有得到有用的输出,您不知道在哪里寻找罪魁祸首。
  2. PyQT 引发并捕获异常,但不传递它们。相反,它只是以状态 1 退出以显示异常被捕获。

要捕获异常,您需要覆盖 sys 异常处理程序:

# Back up the reference to the exceptionhook
sys._excepthook = sys.excepthook

def my_exception_hook(exctype, value, traceback):
    # Print the error and traceback
    print(exctype, value, traceback)
    # Call the normal Exception hook after
    sys._excepthook(exctype, value, traceback)
    sys.exit(1)

# Set the exception hook to our wrapping function
sys.excepthook = my_exception_hook

然后在您的执行代码中,将其包装在 try/catch 中。

try:
    sys.exit(app.exec_())
except:
    print("Exiting")

【讨论】:

  • 自定义异常挂钩有所帮助。我现在看到 WHERE 和 WHY 异常出现了。通常的尝试/除了没有帮助。
猜你喜欢
  • 1970-01-01
  • 2017-07-22
  • 1970-01-01
  • 2017-08-12
  • 2016-12-05
  • 1970-01-01
  • 2011-08-23
  • 2021-12-22
  • 2017-07-31
相关资源
最近更新 更多