TLDR: используйте Sentry
Есть разные виды сбоев и разные виды инструментов.
Стандартный сбой: обычно segfault, низкоуровневый сбой, при котором вы ничего не можете сделать. Это то, что вы видите на вкладке Play Store, собственный сбой/арт. Ни одна из трассировок не будет говорить с вами, так как вы увидите трассировку C вашего интерпретатора Python и всех остальных потоков. Пользователь может увидеть «Приложение XXX внезапно закрылось» или что-то в этом роде. Существуют инструменты для отображения более красивого сообщения в случае родного сбоя и отправки его в другое место, но ваше приложение никогда не восстановится. Единственное, что вы можете сделать с такими инструментами, это перезапустить его.
Сбой Python: хорошие новости, вы можете отследить их и получить понятную трассировку. Я предлагаю вам изучить Sentry. Это приложение с открытым исходным кодом, вы можете установить его на свой сервер, и когда в вашем приложении произойдет что-то плохое, вы можете отправить полную трассировку на вашу установку часового. Очень полезный.
Интеграция в Kivy также очень проста:
if __name__ == "__main__":
import traceback
from raven import Client
client = Client('requests+http://[email protected]/sentry/1')
try:
YourApp().run()
except:
traceback.print_exc()
ident = client.get_ident(client.captureException())
print "Exception caught; reference is %s" % ident
Не забудьте иметь разрешение INTERNET в Android. Если интернета нет, то на консоли два раза не получится. Но это все.
Кроме того, вы можете подключить его к ExceptionManager. Если исключение происходит в основном цикле, то у вас есть возможность перехватить его и не выходить из приложения (игнорировать исключение). Будьте осторожны, если вы делаете что-то важное :D
person
tito
schedule
27.11.2014