TLDR : 사용 Sentry
다른 충돌의 종류 및 도구의 종류-의 다른있다.
네이티브 크래시 : 일반적으로 segfault, 실제로는 아무것도 할 수없는 저수준 크래시입니다. Play 스토어 탭에서 기본 충돌/예술을 볼 수 있습니다. 파이썬 인터프리터와 다른 모든 스레드의 C 트레이스를 보게 될 것이기 때문에, 어떤 추적도 당신에게 말할 것이 없습니다. 사용자는 "갑자기 종료 된 응용 프로그램 XXX"또는 그와 비슷한 것을 볼 수 있습니다. 네이티브 크래시 발생시 더 멋진 메시지를 표시하고 다른 곳으로 보낼 수있는 도구가 있지만 응용 프로그램은 복구되지 않습니다. 이러한 도구로 수행 할 수있는 유일한 작업은 다시 시작하는 것입니다.
파이썬 충돌 : 좋은 소식, 당신은 그들을 잡을 수 있고 이해하기 쉬운 추적을 할 수 있습니다. 나는 당신이 Sentry을 들여다 볼 것을 제안합니다. 그것은 opensource이고, 서버에 센트리를 설치할 수 있으며, 앱에 문제가 발생하면 센트리 설치로 전체 추적을 보낼 수 있습니다. 굉장히 유용하다.
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
안드로이드에서 인터넷 권한이하는 것을 잊지 마십시오. 인터넷이 없으면 콘솔에서 두 번 실패합니다. 하지만 그게 전부입니다.
또한 Kivy의 ExceptionManager에 연결할 수도 있습니다. 예외가 메인 루프에서 발생한다면, 당신은 그것을 잡을 수 있고 앱을 종료하지 않을 수 있습니다 (예외는 무시하십시오). 중요한 것을하고 있는지 조심하십시오 : D
아마 atexit을 사용할 수 있습니다 : https : //docs.python.org/2.7/library/atexit.html? highlight = atexit # module-atexit – Duikboot