获取以前的运行,在iPhone上崩溃日志

时间:2011-01-19 16:16:12

标签: iphone xcode crash logging

我尝试编写崩溃报告功能,当您在崩溃后启动应用程序时,它会将崩溃报告发送到服务器。我找不到如何在应用程序中获取崩溃日志。我看到有一个框架这样做(PLCrashReporter),但是这个框架很大,我不需要它的大部分功能。

有谁知道如何简单地访问日志?

谢谢, 盖

4 个答案:

答案 0 :(得分:14)

我想我没有业力为Nimrod Gat的答案添加评论,所以我必须在这里提供我的跟进。我会尝试让它值得一个独立的答案。

编写安全,正确且可靠的崩溃报告器非常非常困难,特别是在进程中直接运行的报告器。 Nimrod Gat的答案中引用的代码不正确,老实说,该博客文章应该被收回。信号处理程序必须只运行异步安全代码,并且该代码不是异步安全的:

http://www.cocoadev.com/index.pl?SignalSafety

崩溃处理比正常的信号处理更复杂,因为在信号处理程序返回后,您无法期望进程继续成功运行。

很有可能认为你可以将一个更简单的解决方案混合在一起,并且它会在某些时候起作用,但是有一个很好的理由让人们喜欢Google的工程师有数千个LoC致力于可靠的崩溃报告:

http://code.google.com/p/google-breakpad/

在iOS上,您应该只使用PLCrashReporter。在其他平台(例如Mac OS X)上,您应该使用Google Breakpad。重新发明这个轮子是没有意义的,除非你不仅要正确地做,而且要比已经存在的要好。

答案 1 :(得分:5)

我遇到了类似的问题,PLCrashReported对于我想做的事情似乎太复杂了。 请注意,您无法访问Apple生成的崩溃报告,PLCrashReport会生成自己的报告并将其存储在用户的缓存文件夹中。

最后,我使用了以下示例: http://cocoawithlove.com/2010/05/handling-unhandled-exceptions-and.html

它非常简单易用,只需使用以下命令注册异常和信号处理程序:

NSSetUncaughtExceptionHandler(&HandleException);
signal(SIGABRT, SignalHandler);
signal(SIGILL, SignalHandler);
signal(SIGSEGV, SignalHandler);
signal(SIGFPE, SignalHandler);
signal(SIGBUS, SignalHandler);
signal(SIGPIPE, SignalHandler);

使用backtrace类中的UncaughtExceptionHandler方法获取堆栈跟踪。

答案 2 :(得分:4)

也许更好的解决方案是使用完全专业的终端2端解决方案/服务?例如http://apphance.com。它目前处于封闭测试阶段,但您可以要求参与,我们会很快回复您。您唯一需要做的就是注册API密钥并将一个小框架库嵌入到您的应用程序(或android中的.jar文件)中。然后,您不仅可以远程访问崩溃日志,还可以远程访问应用程序生成的调试日志 - 这使得它更有用。现在它的目标是在测试期间使用,但很快就会有一个精简版本,你可以将其嵌入到app-store发布的应用程序中。

在框架内部,我们正在充分利用插入Apple框架并获取崩溃日志信息,解码堆栈跟踪,甚至处理内存不足的情况。 @nupark的所有评论都非常正确:我们花了无数个小时让它无缝地工作 - 线程安全,确保我们能够在你的应用程序最终被杀之前在Apple框架所需的时间内保存所有内容,从内存不足的情况下获取堆栈跟踪(那个非常困难)。对于Android来说也一样 - 我们在那里做了一些聪明的技巧,以确保它真的很好。

免责声明:我是Polidea的首席技术官,该公司是该解决方案的apphance和共同创建者的幕后推手。

答案 3 :(得分:0)

您可能很高兴知道一堆(SAAS)E2E解决方案。

非常简单地集成到您的应用程序中

玩得开心......

  1. crashlytics(免费和我的首选)
  2. hockeyapp
  3. bugSense
  4. Crittercism
  5. 在我们这个时代,您可以使用内置崩溃报告(iOS和Android)

    1. iOS (Itunes connect) - Viewing Crash Reports
    2. Understanding Crash Reports on iPhone OS
    3. Reading Android Market Crash Reports