在raspberry pi上记录python错误
我为一个嵌入式raspberry pi项目编写了一个python应用程序,我正在调试它,因为它使用TFT屏幕而不是全屏幕,并且没有显示器/键盘,所以我不得不通过TFT桌面上的图标(非常小)启动python应用程序。我无法通过SSH启动应用程序,因为它需要X(由于PyQT4),所以要在RPi上运行它,必须使用设备本身上的桌面图标启动它 桌面图标启动一个shell脚本,该脚本使用以下内容:在raspberry pi上记录python错误,python,linux,pyqt,raspberry-pi,Python,Linux,Pyqt,Raspberry Pi,我为一个嵌入式raspberry pi项目编写了一个python应用程序,我正在调试它,因为它使用TFT屏幕而不是全屏幕,并且没有显示器/键盘,所以我不得不通过TFT桌面上的图标(非常小)启动python应用程序。我无法通过SSH启动应用程序,因为它需要X(由于PyQT4),所以要在RPi上运行它,必须使用设备本身上的桌面图标启动它 桌面图标启动一个shell脚本,该脚本使用以下内容: sudo python appname.py >> logfile.log 2>&1
sudo python appname.py >> logfile.log 2>&1
sudo python appname.py>>logfile.log
但它不会写它遇到的任何错误,它只记录我在任何错误之前所做的任何事情
如果我从RPi中取出SD卡并将其放入连接到完整鼠标/键盘/显示器的第二个RPi中,我可以运行python应用程序并查看终端中的错误,但这不能帮助我了解完全组装好的设备上发生了什么
如何记录通常在终端中看到的错误?
编辑:当然,我在应用程序中执行错误捕获,但我在python应用程序中发送shell命令,这可能是python中的try/catch无法捕获的问题。我希望在启动python脚本时捕获终端中的所有输出,而不管它的源代码是什么。目前,您只是捕获标准输出。将您的调用修改为以下内容:
sudo python appname.py >> logfile.log 2>&1
这将重定向stdout和stderr。目前,您只是在捕获stdout。将您的调用修改为以下内容:
sudo python appname.py >> logfile.log 2>&1
这将重定向stdout和stderr。您还可以将stderr捕获到单独的文件:
sudo python appname.py >> logfile.log 2>> error.log
您还可以将stderr捕获到单独的文件中:
sudo python appname.py >> logfile.log 2>> error.log
对于唯一的错误,您可以使用:
sudo python appname.py 2>> logfile.log
仅适用于标准输出:
sudo python appname.py >> logfile.log
#same as sudo python appname.py 1>> logfile.log
对于stdout
和stderr
:
sudo python appname.py >> logfile.log 2>&1
对于唯一的错误,您可以使用:
sudo python appname.py 2>> logfile.log
仅适用于标准输出:
sudo python appname.py >> logfile.log
#same as sudo python appname.py 1>> logfile.log
对于stdout
和stderr
:
sudo python appname.py >> logfile.log 2>&1
当我添加
2>&1
时,该应用程序根本不会启动,也不会写入任何内容。结果表明,这是因为我在用于启动的图标中设置了Terminal=false
。将其设置为true使一切正常当我添加2>&1
时,应用程序根本不会启动,也不会写入任何内容。结果表明,这是因为我在用于启动的图标中设置了Terminal=false
。将其设置为true可以使一切正常