簡體   English   中英

PyQt5失敗了,含有神秘的信息

[英]PyQt5 fails with cryptic message

我用模型和視圖創建了小應用程序。 從一開始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自其驅動程序的bug (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")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM