使用自动释放池和环境变量进行调试

时间:2011-11-07 16:13:48

标签: iphone xcode debugging nsautoreleasepool

我对项目有调试问题。这个项目不是最好的一个,它有很多内存问题(泄漏,僵尸)。这个项目不是我写的,所以我甚至不知道其中的“小奇迹”。问题是,在项目的某个地方有一个带有autorelease选项的NS(Mutable)数组。也许在另一方面有一个发布(我无法找到确切的代码行,它在哪里)。

当我在设备上运行项目时,打开几个视图后会出现内存警告。 didReceiveMemoryWarning方法得到了解释,但viewDidUnload没有。

也许项目会在发布时释放该数组,当内存警告到来并破坏自动释放池时,数组保留计数为-1 =>这是一个僵尸。   问题是,在调试模式下,没有显示任何调试行或调用堆栈,只有接收到内存警告。

[Classname didReceiveMemoryWarning]

- >和崩溃。   我启用了环境变量: NSZombieEnabled NSHangOnUncaughtException

NSAutoreleaseFreedObjectCheckEnabled, NSDebugEnabled, MallocStackLogging, MallocStackLoggingNoCompact, NSDeallocateZombies,但没有结果。

你知道我该怎么做才能找出哪个数组是有罪的(不重写整个项目:P)?

1 个答案:

答案 0 :(得分:0)

您是否尝试过malloc_history命令?

http://www.cocoadev.com/index.pl?DebuggingAutorelease