在设备上运行时崩溃的模拟器,而不是在设备
问题描述:
我的应用崩溃(随机的方式),碰撞是不能重现-能的100%的时间。但它似乎只发生在设备上,而不是模拟器中。在设备上运行时崩溃的模拟器,而不是在设备
当我在模拟器NSZombies跑我从来没有看到的问题。有人能够点亮我的观点。
- 设备内存有限,也许是因为这个原因而崩溃。
- 什么会被认为是会导致崩溃的大内存分配?
- 内存泄漏/大分配会导致内存损坏吗?
- 我所有的崩溃总是EXC_BAD_ACCESS,但就像我说的,从来没有发生在模拟器,所以我不能运行僵尸。 (或者有另一种方法吗?)
注意我也模拟了模拟器上的低内存警告,看看是否导致问题。
这使我疯狂。任何帮助,将不胜感激。
答
I know where it crashes but I need to know which other classes released this object.
覆盖 - [发行] - [自动释放]和 - [保留]为你的对象(或者你可以为NSObject的做到这一点,如果你不知道哪个对象),然后记录他们,设置断点。
如果您确定在每个点上正在释放哪个对象,请将时间戳/对象ID/retaincount添加到日志语句中,那么您可能会将所有数据放入电子表格中,然后获得相同类型的乐器会给你的数据。
耻辱,你必须建立3.0。几乎没有人再使用3.x,而ARC(虽然不是所有问题的银弹)比非ARC更好。
而且这里有一个提示:删除你的模拟器的应用程序,并重新安装。我有一个问题,我的项目中缺少一些捆绑资源,但模拟器在构建之间挂着它们。如果试图加载的.xib就是不再在你的项目中,我可以看到它崩溃...
你不能使用ARC的原因吗?只是为了排除内存问题。两者之间的主要区别在于区分大小写。模拟器不区分大小写,但设备是。然而,“正常情况下”你会得到sigabrt错误vs exc_bad_access,如果它是一个案件的问题。唯一需要尝试的是在手机插入时在手机上运行它,以便将任何错误输出到控制台。 – 2012-07-09 16:47:34
不能去ARC,因为我必须仍然支持iOS 3.0(是的,我知道它很烂)。我试着用调试插入它,但是我看不到僵尸对象,也没有计算引用计数或查看堆栈跟踪,除了崩溃的行之外,这是有意义的。我知道它崩溃的地方,但我需要知道哪些其他类发布了这个对象。 – MrShoot 2012-07-09 16:55:39
使用断点。我确定你的一个对象是零(可能很快就会发布),那是什么导致了错误。在这里寻找放置一种通用的断点(第二个评论在这篇文章:http://stackoverflow.com/a/8072273/530933) – 2012-07-09 17:02:21