0

我一直遇到一些导致我的游戏崩溃的错误问题。首先它只是给了我一个“BAD_ACCESS”,但是通过启用 Zombie 对象,调试器这样说:

-[CCSprite setPosition:]:消息发送到释放的实例 xxxx

当对象 A 和 B 发生碰撞时会发生崩溃,但前提是碰撞发生在对象 B 创建的同一时刻。

A 和 B 都应该在碰撞时被破坏,除了上述情况外,这工作得很好。我正在使用 Box2D 物有所值。

有没有办法以更具体的方式跟踪错误?就像是A还是B给我带来了麻烦。

4

1 回答 1

0

如果您使用的是模拟器,请启用 MallocStackLogging 和 NSDebugEnabled。然后,当您收到此消息时,请记下违规对象的进程 ID 和内存地址。然后在您的终端中,使用malloc_history <pid> <memory_address>查看此地址的分配和解除分配的历史记录。它将为您提供每个 alloc 和 dealloc 的堆栈跟踪。最近的alloc 可能是您分配了一些您可能没有保留的地方,或者最近的dealloc 是您不小心将其dealloc 的地方。

以下是 malloc_history 的手册页:

https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/malloc_history.1.html

于 2012-11-11T02:50:55.010 回答