gpt4 book ai didi

android - 如何捕获 kivy-client 崩溃日志并将其发送到我的服务器?

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:07:05 24 4
gpt4 key购买 nike

当出现一些硬件问题并且我的 kivy 应用程序崩溃时,我遇到了问题。例如在 Android 或 iOS 上。普通用户看不到日志,我也看不到。

因此,当我的应用程序启动时,我想创建单独的进程并以某种方式查看主应用程序的状态。如果发生崩溃,我想将错误日志发送到我的服务器。那么,最好的方法是什么?也许另一个过程是多余的,我可以用更简单的方式来做?我如何准确地捕捉崩溃日志?...谢谢!

最佳答案

TLDR:使用 Sentry

有不同类型的崩溃和不同类型的工具。

native 崩溃:通常是段错误,一种您实际上无能为力的低级别崩溃。这就是您在 Play 商店选项卡上看到的内容,原生崩溃/艺术。没有任何回溯会告诉你,因为你会看到你的 Python 解释器和所有其他线程的 C 跟踪。用户可以看到“应用程序 XXX 突然退出”或类似内容。有一些工具可以在 native 崩溃的情况下显示更好的消息并将其发送到其他地方,但您的应用程序将永远无法恢复。使用此类工具,您唯一能做的就是重新启动它。

Python 崩溃:好消息,您可以捕获它们并进行可理解的追溯。我建议你看看Sentry .它是开源的,你可以在你的服务器上安装哨兵,当你的应用程序出现问题时,你可以将完整的回溯发送到你的哨兵安装。非常有用。

集成到 Kivy 中也非常简单:

if __name__ == "__main__":
import traceback
from raven import Client
client = Client('requests+http://XXKEYXX@sentry.yourserver.com/sentry/1')
try:
YourApp().run()
except:
traceback.print_exc()
ident = client.get_ident(client.captureException())
print "Exception caught; reference is %s" % ident

不要忘记在 Android 中拥有 INTERNET 权限。如果没有互联网,它会在控制台上失败两次。但仅此而已。

此外,您可能希望将其插入 Kivy 的 ExceptionManager .如果异常发生在主循环中,那么您可以捕获它而不退出应用程序(忽略异常)。当心你是否在做重要的事情 :D

关于android - 如何捕获 kivy-client 崩溃日志并将其发送到我的服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21063046/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com