发布应用程序上的iPhone崩溃捕获选项 [英] iPhone Crash Catching Options on Published Apps

查看:277
本文介绍了发布应用程序上的iPhone崩溃捕获选项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道如何嵌入CrashCatcher框架( http://code.google.com/p/ plcrashreporter )。我写了一些代码,将崩溃报告直接上传到服务器。而且,我的意图是更快地访问崩溃报告,而不需要通过苹果/ iTunes来获取它们。



有人知道是否嵌入CrashCatcher框架可能会通过应用程序审查过程?如果是,是否可能导致任何问题或与苹果已经内置到iTunes / iTunesConnect的崩溃捕获机制冲突。



想法?

解决方案

我与CrashReporter,Landon(谢谢!)的作者之一对应,以提供一些额外的清晰度。

显然,CrashReporter(信号)和Apple的碰撞捕捉(Mach异常)使用的机制是截然不同的,相互兼容的。




您是否了解苹果如何捕获崩溃与CrashReporter之间的差异?我没有仔细看过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异常处理程序来在Mac OS X和iPhone上实现它们的崩溃报告; mach异常可以由异常服务器(进程内或进程外部)处理 - 默认的内核提供的UNIX异常处理程序将mach异常映射到UNIX信号。



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



对于崩溃报告,Mach异常API的优点是,您可以简单地将未修改的异常传递到下一个处理程序。我调查了早期实现这一点,但必要的API是私有的[1],所以决定注册标准的UNIX信号处理程序。如果你想更多地了解Mach异常系统,我建议从Mac OS X Internals的第9章第7节开始。



干杯,
Landon



[1] Unity 3d最近通过exc_server()运行mach exception private API的问题:
http://blogs.unity3d.com/2009/11/14/unity-iphone -app-store-submissions-problem-resolved /


I am wondering about embedding the CrashCatcher framework (http://code.google.com/p/plcrashreporter) in a production app. I have written some code that will upload a crash report directly to a server. And, my intent on this was to have quicker access to crash reports and not need to go through Apple/iTunes to get them.

Does anyone know whether or not embedding the CrashCatcher framework is likely to pass the application review process? And, if it does, is it likely to cause any problems or conflict with the crash catching mechanisms that Apple has built into iTunes/iTunesConnect?

Thoughts?

解决方案

I corresponded with one of the authors of CrashReporter, Landon (thank you!), to provide some additional clarity on this.

Apparently, the mechanisms used by CrashReporter (signals) and Apple's crash catching (Mach exceptions) are distinct and mutually compatible.

Do you understand the differences between how Apple is catching crashes vs CrashReporter? I have not looked closely at the CrashReporter source, but from what I read/remember it works by registering signal handlers? Is this accurate?

Right -- PLCrashReporter registers standard signals handlers for the signals its interested in: 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

Do you know if Apple leveraging a different mechanism?

Apple makes use of a Mach exception handler to implement their crash reporting on both Mac OS X and the iPhone; mach exceptions can be handled by an exception server (either in-process or external to the process) -- the default kernel-provided UNIX exception handler maps mach exceptions to UNIX signals.

The UNIX exception handler is registered here: http://fxr.watson.org/fxr/source/bsd/kern/bsd_init.c?v=xnu-1456.1.26#L999

For crash reporting, the advantage of the Mach exception API is that you can simply pass the unmodified exceptions directly on to the next handler. I investigated implementing this early on, but the necessary API is private[1], so settled on registering standard UNIX signal handlers. If you want to read more about the Mach exception system, I'd recommend starting with Chapter 9, Section 7 of Mac OS X Internals.

Cheers, Landon

[1] Unity 3d recently ran issues with mach exception private API via exc_server(): http://blogs.unity3d.com/2009/11/14/unity-iphone-app-store-submissions-problem-solved/

这篇关于发布应用程序上的iPhone崩溃捕获选项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆