【发布时间】:2009-04-23 22:21:48
【问题描述】:
我正在努力捕捉我的代码中发生的一个严重的潜在错误。问题是,该错误是完全随机的,可能会在应用程序运行时 9 分钟或 30 分钟后发生。我已经继续并将出色的 PLCrashReporter 添加到我的项目 (http://code.google.com/p/plcrashreporter) 中,这对于微不足道的错误非常有效。此外,当我有疑问时,我将导航到 ~/Library/Logs/CrashReporter/MobileDevice/ 中的崩溃日志,并在崩溃日志上运行 symbolicatecrash。这个 + GDB 最终会捕获任何错误,除了我现在面临的错误。
显然,此错误的性质甚至会阻止 Apple 的崩溃日志正确写入存储。当我将我的 iPhone 或 iPod Touch 与 iTunes 同步并在我的应用程序上运行 symbolicatecrash 时,这会显示:
sf$ symbolicatecrash foo.crash
No crash report version in foo.crash at /usr/local/bin/symbolicatecrash line 741.
可能是我的应用程序根本没有留下崩溃报告,并且由于内存问题而退出。我确实在我的 App Delegate 中看到了 applicationWillTerminate:在退出之前执行我的 NSLog 语句。但是,通过 ObjectAlloc 运行应用程序后,我的应用程序从未达到 > 2.08MB 的使用量。尽管如果我正确阅读了结果,我确实在整个测试运行期间分配了超过 28MB 的内存。
再次感谢一切。
【问题讨论】:
-
您确定您的应用程序正在崩溃并且没有因为内存不足而终止吗?如果它被操作系统终止,则 AFAIK 不会生成崩溃日志。
-
我认为内存不足是经典的“以代码 101 退出”,但也许我记错了。
标签: iphone objective-c cocoa-touch debugging