2015-05-18 58 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