在NSAutoreleasePool
释放时,我遇到了崩溃。可能是由于其他代码过早地释放了池试图去释放一个对象导致的。我的崩溃发生在objc_msgSend
中,因为它试图向一个不存在的对象发送消息。
鉴于堆栈状态,我有哪些提示/技巧/流程/gdb
命令可用来获取有关涉及的对象和/或非法释放发生的位置的信息?
在NSAutoreleasePool
释放时,我遇到了崩溃。可能是由于其他代码过早地释放了池试图去释放一个对象导致的。我的崩溃发生在objc_msgSend
中,因为它试图向一个不存在的对象发送消息。
鉴于堆栈状态,我有哪些提示/技巧/流程/gdb
命令可用来获取有关涉及的对象和/或非法释放发生的位置的信息?
objc_msgSend
中崩溃的问题。更奇怪的是,在所谓的崩溃发生之前,application:didFinishLaunchingWithOptions:
甚至都没有被调用!在我的情况下,崩溃实际上是一个断点,我不小心设置了一个内存地址,这个地址在我的代码被执行之前就被调用了。经过大约一个小时的尝试,我取消了断点,运行了代码,然后摊手一笑,继续假装没发生过任何事情...如果您使用NSZombieEnabled,您至少可以确定对象所属的类。