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

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

问题描述

我想知道嵌入 CrashCatcher 框架 (http://code.google.com/p/plcrashreporter) 在生产应用程序中.我编写了一些代码,可以将崩溃报告直接上传到服务器.而且,我这样做的目的是更快地访问崩溃报告,而无需通过 Apple/iTunes 来获取它们.

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.

有谁知道嵌入 CrashCatcher 框架是否有可能通过应用程序审查流程?并且,如果确实如此,它是否可能与 Apple 内置在 iTunes/iTunesConnect 中的崩溃捕获机制产生任何问题或冲突?

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?

想法?

推荐答案

我与 CrashReporter 的作者之一 Landon 进行了通信(谢谢!),以提供一些额外的说明.

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

显然,CrashReporter(信号)和 Apple 的崩溃捕获(Mach 异常)使用的机制是不同的且相互兼容的.

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

您了解 Apple 捕获崩溃的方式与 CrashReporter 之间的区别吗?我没有仔细查看 CrashReporter 源,但从我读/记得的内容来看,它通过注册信号处理程序起作用?这准确吗?

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?

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

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

您知道 Apple 是否利用了不同的机制吗?

Do you know if Apple leveraging a different mechanism?

Apple 使用 Mach 异常处理程序在 Mac OS X 和 iPhone 上实现崩溃报告;mach 异常可以由异常服务器(进程内或进程外部)处理——默认内核提供的 UNIX 异常处理程序将 mach 异常映射到 UNIX 信号.

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.

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

The UNIX exception handler is registered here: 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 节开始.

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.

干杯,兰登

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

[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天全站免登陆