PyQt5 失败并显示神秘消息



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

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

蟒蛇 3.6.1 PyQt5 5.8.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")

最新更新