3

假设我的应用程序崩溃意味着当时applicationWillTerminate调用了函数。在该函数中,我想将崩溃日志文件保存在临时目录中。当应用程序当时启动时,我想通过编码将崩溃报告文件从 iOS 设备上传到我的服务器位置。

我正在使用此代码来保存崩溃日志文件。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *logPath = [documentsDirectory stringByAppendingPathComponent:@"console.log"];
freopen([logPath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr);

但此代码将在模拟器中运行。我可以看到这个文件

/Users/UserNAme/Library/Application Support/iPhone Simulator/6.0/Applications/xxx-yyy-sss--eee/Documents/console.log

但我在 ios 设备中找不到此文件。

注意:在我正在使用的 ios 设备中查找文件iExplorer

4

2 回答 2

9

不幸的是,您无法以编程方式查看设备上的崩溃日志。为了克服这个问题,有许多商业、准商业和开源解决方案。

特别是HockeyApp(现在归微软所有)和crittercism提供了商业解决方案。此外,TestFlightApp(虽然被苹果公司收购)仍然通过其接口提供这种功能。

HockeyApp 源代码也可以在github上找到。

最后,这些系统中的大多数都使用名为plcrashreporter的底层崩溃捕获器,它是一个开源框架,可将 iOS 崩溃报告的近乎精确的副本放置在您的目录中。

如果您想自己管理事情,我强烈建议plcrashreporter您使用托管和商业解决方案,您应该查看它们并自己决定。

于 2013-03-18T10:36:34.027 回答
2

另一个有用的选项(我们使用它)是 Crashlytics.com,它是免费的,并且对报告有很大的控制权(现在归 twitter 所有,请谨慎使用!)。

于 2013-03-18T13:05:54.557 回答