我创建了带有模型和视图的小应用程序。从一开始 PyQt5 每次出现问题都会崩溃,
Process finished with exit code -1073740791 (0xC0000409)
它非常神秘。我不知道哪个组件失败了。有一段时间我能够通过调试解决这个问题,但有些失败,我不知道是什么。
如何从 PyQt5 获取调用堆栈?如何获得更详细的崩溃消息?
Python 3.6.1 PyQt5 5.8.1 PyCharm
设法通过将您的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 页)
更新:
我处理过同样的问题,答案是双重的:
要捕获异常,您需要覆盖 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
Run Code Online (Sandbox Code Playgroud)
然后在您的执行代码中,将其包装在 try/catch 中。
try:
sys.exit(app.exec_())
except:
print("Exiting")
Run Code Online (Sandbox Code Playgroud)