代码之家  ›  专栏  ›  技术社区  ›  xyzzycoder

已发布应用程序上的iPhone崩溃捕获选项

  •  2
  • xyzzycoder  · 技术社区  · 15 年前

    http://code.google.com/p/plcrashreporter )在生产应用程序中。我已经编写了一些代码,可以将崩溃报告直接上传到服务器。而且,我的目的是更快地访问崩溃报告,而不需要通过Apple/iTunes获取它们。

    思想?

    4 回复  |  直到 15 年前
        1
  •  3
  •   xyzzycoder    15 年前

    我与《CrashReporter》的作者之一Landon进行了通信(谢谢!),以进一步澄清这一点。

    显然,CrashReporter(信号)和苹果的崩溃捕捉(马赫例外)所使用的机制是不同的,并且相互兼容。

    右——PLCrashReporter为其感兴趣的信号注册标准信号处理程序: http://code.google.com/p/plcrashreporter/source/browse/trunk/Source/PLCrashSignalHandler.m#41 http://code.google.com/p/plcrashreporter/source/browse/trunk/Source/PLCrashSignalHandler.m#223

    你知道苹果是否利用了不同的机制吗?

    苹果利用Mach异常处理程序在MacOSX和iPhone上实现崩溃报告;mach异常可以由异常服务器(进程内或进程外)处理——默认内核提供的UNIX异常处理程序将mach异常映射到UNIX信号。

    UNIX异常处理程序在此处注册: http://fxr.watson.org/fxr/source/bsd/kern/bsd_init.c?v=xnu-1456.1.26#L999

    对于崩溃报告,Mach exception API的优点是您可以简单地将未修改的异常直接传递给下一个处理程序。我很早就研究过如何实现它,但必要的API是私有的[1],因此决定注册标准的UNIX信号处理程序。如果你想阅读更多关于Mach异常系统的内容,我建议你从MacOSX内部的第9章第7节开始。

    兰登

    [1] Unity 3d最近通过exc_server()运行了mach异常专用API问题: http://blogs.unity3d.com/2009/11/14/unity-iphone-app-store-submissions-problem-solved/

        2
  •  1
  •   idogg98    13 年前

    我在我的生产应用程序上使用了一个名为Critercism(在Techcrunch上看到)的服务。应用商店没有任何问题。

    www.crittercism.com

        3
  •  0
  •   nico    15 年前

    创建这个框架的人在商店里得到了很多应用程序。如果有人在生产应用程序中成功地使用它,他们必须了解它。您应尝试联系: http://www.plausiblelabs.com/

        4
  •  0
  •   lyonanderson    15 年前

    应该可以,但是您应该让用户选择是否发回崩溃报告。

    当我们这样做时,我们在应用程序崩溃后启动时预先填充了一封电子邮件,其中包含适当的stacktrace。用户可以选择是否发送。