iPhone应用程序随机崩溃,没有任何错误或堆栈跟踪

时间:2012-06-04 20:43:05

标签: iphone objective-c ios xcode memory-leaks

我是新来的。对不起,如果我正在重复这个问题,但我的问题与其他问题略有不同。

我的应用程序在一定的时间间隔后随机崩溃,没有任何错误日志或堆栈跟踪。我怀疑这是一个记忆问题。我有以下问题:

  

1。)如何获得堆栈跟踪(我已尝试启用NSZombie和NSUnacughtExcpetion处理程序)但没有工作

     

2。)我的应用中经常收到内存警告。我如何确认它是否是上述问题的主要嫌疑人? (我使用了泄漏,我的应用程序在使用4Mb时崩溃,所以我不确定内存泄漏是否导致我的应用程序崩溃。我知道某些应用程序占用内存超过4MB。)

     

3。)应用程序崩溃之前iOS中应用程序的内存泄漏上限是多少?

     

4。)ARC会在这种情况下帮助我吗?

另外,我尝试使用NSLog语句调试问题,但由于它随机崩溃,我很难用这种技术检测根本原因。

任何想法都会得到帮助或真的很感激

5 个答案:

答案 0 :(得分:8)

  

我的应用程序在一定的时间间隔后随机崩溃,没有任何错误日志或堆栈跟踪。我怀疑这是一个记忆问题。

要确认是内存问题,请将设备与iTunes同步,并在~/Library/Logs/CrashReporter/MobileDevice/中查找名称中包含LowMemory的文件。如果您在应用名称旁边看到(jettisoned),则表明它已被iOS杀死,因为使用了太多内存。

应用可以退出而不留下崩溃报告的另一种方式是erroneously called exit()

有关详细信息,请参阅" Debugging Deployed iOS Apps"和" Understanding and Analyzing iOS Application Crash Reports"。

答案 1 :(得分:4)

不确定但是阅读寄存器可能有所帮助。

首先转到“例外”标签,然后“添加例外断点”'使用左下角的+。 enter image description here

然后当应用程序崩溃时点击" 0 objc_exception_throw"在线程1下 enter image description here

最后在控制台中输入:

  • 注册阅读 (你应该得到一份寄存器清单)
  • po $ rax(通常情况下,例外情况是' rax')

    (您应该在控制台上看到异常输出)

希望这有帮助。

答案 2 :(得分:3)

听起来好像设备内存不足并关闭了你。在调试内存警告时,stackoverflow上有很多线程。

这一点谈到了what to look for when using the Instruments tool

以下是对get the memory warning level, and what the codes mean.

的解释

iPhone上没有固定的内存限制。我已向Apple支持代表询问了这个问题,并且他们不会给我一个固定的答案(可能是因为该算法实际上并没有对第三方应用程序实施任何一个硬限制)。

而且,是的,ARC可能是一件很棒的事情。在您的情况下,您可能需要重新编写大量代码以使其符合ARC标准,但ARC绝对是一个有用的功能,并且可以生成内存问题较少的程序,编程人员的工作量较少(让您有更多时间解决其他问题!)

答案 3 :(得分:1)

答案 4 :(得分:0)

在我的情况下,我关闭了所有其他应用程序,它开始正常工作,也许这是一个内存问题