我遇到了导致游戏崩溃的错误。首先它只是给了我一个“BAD_ACCESS”,但通过启用Zombie对象调试器说:
- [CCSprite setPosition:]:发送到解除分配的实例xxxx的消息
当对象A和B发生碰撞时发生崩溃,但只有在碰撞发生在对象B创建的同一时刻才会发生。
A和B都应该在碰撞中被销毁,除了上述情况外,这种方法都可以正常工作。我正在使用Box2D来实现它的价值。
有没有办法以更具体的方式跟踪错误?就像A或B那样给我带来麻烦。
答案 0 :(得分:0)
如果您使用的是模拟器,请启用MallocStackLogging和NSDebugEnabled。然后,当您收到此消息时,请记下违规对象的进程ID和内存地址。然后在您的终端中,使用malloc_history <pid> <memory_address>
查看此地址的alloc和deallocs的历史记录。它将为您提供每个alloc和dealloc的堆栈跟踪。最近的alloc可能是你分配了一些你可能没有保留的东西的地方,或者最近的dealloc就是你意外解除它的地方。
以下是malloc_history的手册页: