使用Autorelease池和环境变量进行调试
我有一个项目的调试问题。 这个项目不是最好的,它有很多内存问题(泄漏,僵尸)。 这个项目不是我写的,所以我甚至不知道它里面的“小奇迹”。 问题是,在项目的某个地方有一个带有autorelease选项的NS(可变)数组。 也许在另一部分有一个发布(我找不到确切的代码行,它在哪里)。
当我在设备上运行项目时,打开几个视图后会出现内存警告。 didReceiveMemoryWarning方法得到了comed,但viewDidUnload没有。
也许该项目销毁给定的释放数组,并且当内存警告来到并破坏自动释放池时,数组保留计数为-1 =>它是一个僵尸。 问题是,在调试模式下没有显示任何调试行或调用堆栈,只有收到内存警告。
[Classname didReceiveMemoryWarning]
- >和崩溃。 我已经启用了环境变量: NSZombieEnabled , NSHangOnUncaughtException ,
NSAutoreleaseFreedObjectCheckEnabled, NSDebugEnabled, MallocStackLogging, MallocStackLoggingNoCompact, NSDeallocateZombies
,但没有结果。
你有什么想法,我应该怎么做才能找出哪个阵列是有罪的(不重写整个项目:P)?
你尝试过malloc_history命令吗?
http://www.cocoadev.com/index.pl?DebuggingAutorelease
链接地址: http://www.djcxy.com/p/72755.html上一篇: Debugging with Autorelease Pool and Environment Variables