2015-05-18 5 views
0

У меня есть время hellova, отлаживающее приложение python, которое я написал для встроенного проекта pask pap Я работаю, потому что он использует TFT-экран вместо полного монитора и не имеет монитора/keyboard, поэтому мне нужно запустить приложение python через значок на рабочем столе TFT (очень маленький). Я не могу запустить приложение через SSH, потому что он требует X (из-за PyQT4), поэтому, чтобы запустить его на RPi, его нужно запустить с помощью значка рабочего стола на самом устройстве.Регистрация ошибок python на малине pi

значок на рабочем столе запускает скрипт, который использует следующее:

sudo python appname.py >> logfile.log

но не писать, что ошибка его удара, это только журналы все, что я делаю до каких-либо ошибок.

Если я удалю SD-карту из RPi и поместил ее во второй RPi, я подключился к полной мыши/клавиатуре/дисплею, я могу запустить приложение python и увидеть ошибку в терминале, но это не так, t помогите мне понять, что происходит на полностью собранном устройстве.

Как зарегистрировать ошибку, которую я обычно видел в терминале?

EDIT: Конечно, я занимаюсь ошибкой в ​​приложении, но я отправляю команды оболочки в приложение python, что может быть проблемой, которая не была бы поймана try/catch в python. Я бы хотел поймать ВСЕ выход в терминале, когда вы запускаете скрипт python, независимо от его источника.

ответ

4

Как вы стоите, вы просто захватываете stdout. Измените свой вызов на следующее:

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

Это перенаправит как stdout, так и stderr.

+0

, когда я добавляю '2> & 1', приложение вообще не запускается, и ничего не написано – jugg1es

+0

, так что получается, что я установил' Terminal = false' в значок, который я запускаю для запуска. установив его в true, чтобы все работало – jugg1es

+1

О, ничего себе. Рад, что ты разобрался. :) – tink

0

Вы также можете захватить STDERR в отдельный файл:

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 

Для обоих stdout и stderr:

sudo python appname.py >> logfile.log 2>&1 
Смежные вопросы