2015-05-18 89 views
0

我有一個helluva時間調試一個python應用程序我已經寫了一個嵌入式覆盆子pi項目我正在研究,因爲它使用的TFT屏幕,而不是一個完整的顯示器,並沒有監視器/鍵盤,所以我不得不通過TFT桌面上的圖標(非常小)啓動python應用程序。我無法通過SSH啓動應用程序,因爲它需要X(由於PyQT4),所以爲了讓它在RPi上運行,它必須使用設備本身的桌面圖標啓動。樹莓派記錄python錯誤

桌面圖標啓動使用以下shell腳本:

sudo python appname.py >> logfile.log

但不寫任何錯誤它擊中,它只是不管我之前的任何錯誤做日誌。

如果我從RPi中取出SD卡並將其放入第二個RPi中,我已連接到完整的鼠標/鍵盤/顯示屏,我可以運行python應用程序並在終端中查看錯誤,幫助我弄清楚完全組裝設備上發生了什麼。

如何記錄我通常會在終端中看到的錯誤?

編輯:當然我在應用程序中發生錯誤捕獲,但我發送的python應用程序中的shell命令可能是不會被python中的try/catch捕獲的問題。我希望在啓動一個python腳本時捕獲終端中的所有輸出,而不管它是什麼源代碼。

回答

4

就目前而言,你只是捕獲標準輸出。修改您的調用以下:

sudo python appname.py >> logfile.log 2>&1 

這將重定向標準輸出和標準錯誤。

+0

當我添加'2>&1'時,該應用程序將不會啓動並且什麼都沒有寫入 – jugg1es

+0

所以事實證明這是因爲我在我用來啓動的圖標中設置了'Terminal = false'。設置它爲true使所有的工作 – jugg1es

+1

哦,哇。很高興你有這個排序。 :) – tink

0

您還可以捕獲錯誤輸出到一個單獨的文件:

sudo python appname.py >> logfile.log 2>> error.log 
1

對於唯一的錯誤,你可以使用:

sudo python appname.py 2>> logfile.log 

僅限stdout

sudo python appname.py >> logfile.log 
#same as sudo python appname.py 1>> logfile.log 

對於這兩種stdoutstderr

sudo python appname.py >> logfile.log 2>&1