如何找到并修复崩溃的原因

Posted

技术标签:

【中文标题】如何找到并修复崩溃的原因【英文标题】:how to find and fix the cause of the crash 【发布时间】:2013-03-03 14:35:29 【问题描述】:

我向应用商店提交了一个应用,但由于以下原因被拒绝:

“我们发现您的应用在运行 ios 6.1.2 的 iPhone 5 上崩溃,这不符合 App Store 审核指南。

当我们发生以下情况时,您的应用崩溃了:

当用户点击登录应用程序时,会产生崩溃。

这发生在您的应用被使用时:

在 Wi-Fi 上 在蜂窝网络上

如果您的应用使用过多内存,它可能会遇到此问题。要详细了解 iOS 内存使用情况以及如何跟踪内存使用和泄漏,请参阅内存使用性能指南。”

我无法再次触发我这边的崩溃。我使用分配工具分析了我的应用程序,发现我的实时字节从未超过 12MB。使用泄漏工具,我发现我有一些泄漏(全部来自 3rd 方来源),但它们非常轻微,不应该导致应用程序崩溃。我不知道该怎么做。。

    应用程序真的因为使用了太多内存而崩溃了吗? 还有其他原因吗? 我应该如何解决这个问题?

编辑 - 附上crash log

查看this&that,似乎使用 ASIHTTPRequest 框架会以某种方式导致崩溃,但仅限于临时或分发版本,这使得调试更加令人头疼。 真的是这个原因吗?我应该改用 AFNetworking 吗?

【问题讨论】:

可能重复:***.com/q/14825056/581994 如果没有更多数据,尤其是崩溃报告,答案将是假设性的。对于这个和未来的问题,请按照链接页面中的建议:emclstcd.tk 我对崩溃日志进行了符号化,并在问题中附加了一个链接。 @HotLicks,我检查了副本,它帮助我象征了崩溃日志,但是 - 我找不到我提到的 1,2,3 问题的答案.. 【参考方案1】:

是的,您应该切换到 AFNetworking,因为不再支持 ASIHTTPRequest。

要调试此问题,请尝试将 优化级别 设置为 Fastest, Smalles [-Os]。这通常是调试和发布代码行为不同的原因。

【讨论】:

将优化级别设置为最快,Smales [-Os] 帮助我触发了我这边的崩溃。该错误位于 ASIHTTPRequest 包中。我改用AFNetworking,一切都解决了。【参考方案2】:

应用程序真的因为使用了太多内存而崩溃了吗?

没有您的应用因访问错误而崩溃。通常这意味着您试图访问已释放的对象。

我应该如何解决这个问题并解决问题?

崩溃发生在 Server.m 的第 132 行(方法:registerWithUserProvider:)。你应该看看这个方法。也许一个简单的 nil 检查可以解决您的问题,但没有代码很难说。

【讨论】:

以上是关于如何找到并修复崩溃的原因的主要内容,如果未能解决你的问题,请参考以下文章

OSx 更新后如何修复损坏的 python 2.7.11

分段错误错误(信号名称:SIGSEGV)的原因是啥,我将如何找到/修复它?

如何修复 .NET Windows 应用程序在启动时崩溃并出现异常代码:0xE0434352?

如何确定我的 SIGTrap 崩溃的原因?

滚动表格视图后点击选择行时如何修复崩溃?

MySQL崩溃修复案例