2016-10-13 80 views
0

我有一個Python3.4和PyQt5應用程序。此應用程序與嵌入式設備通信(發送和接收一些幀)。如何調試無聲崩潰

我有一個方法(從QThread運行)來檢索設備事件(它可以是10個事件或600多個)。這種方法在「釋放」模式下工作良好。 但是,當我用Pycharm在「調試」模式下啓動程序時,它將在沒有斷點的情況下工作,但如果我放置斷點,將會退出代碼0。

我有一個重試按鈕來啓動這個過程。 因此,在發佈模式下,如果我一次又一次重試,它也將失敗,並退出代碼0.

此外,應用程序不會在同一時刻崩潰,如果要從中讀取數據量設備很大,軟件會較早崩潰,否則會更長。

所以我在想內存,但我無法捕捉到任何異常。 我想在我的程序,沒有再提高每一個例外,所以我嘗試添加放入系統線在我的主:

def on_exception_triggered(type_except, value, tb): 
    import traceback 
    trace = "".join(traceback.format_exception(type_except, value, tb)) 
    print("ERROR HOOKED : ", trace) 
    sys.__excepthook__(type_except, value, tb) 

sys.excepthook = on_exception_triggered 

但是它趕上而已

+0

您正在使用哪種類型的斷點,以及如何配置它? – sytech

+0

默認的PyCharm斷點,我不配置它。我只需單擊我想要放置斷點的位置,然後在調試模式下啓動程序 – PyNico

+0

這可能是原因。它也可能取決於你在哪裏放置斷點。我建議檢查[使用斷點]上的PyCharm文檔(https://www.jetbrains.com/help/pycharm/2016.1/using-breakpoints.html) - 您可以配置一個斷點來掛起所有線程,或者只是符合斷點條件的線程(條件也是可配置的) – sytech

回答

0

其實是最好的事情,你可以做是試圖讓你的代碼獨立於pyqt並且調試它尋找問題修復它們並且與pyqt建立連接,否則即使你的代碼工作正常,你將只在屏幕上得到接口並且你不能看到發生了什麼