我正在尝试调试Lion中的GC问题。我的NSDocument、NSWindowController和NSWindow子类是在10.6中正确收集的,而不是10.7。
我已经检查了“信息gc-根”的输出,但我不明白它到底在告诉我什么。我没有找到解释输出的文档。如果我忽略了它,我希望有人会指出它。
下面是窗口的输出:
(gdb) info gc-roots 0x181b3f0
Number of roots: 1
Root:
0 Kind: bytes rc: 1 Address: 0x019666c0 Offset: 0x00000014
1 Kind: object rc: 0 Address: 0x0181b3f0 Class: CCMDocumentWindow
(gdb) po 0x019666c0
<__NSAutoBlock__: 0x19666c0>窗口控制器:
(gdb) info gc-roots 0x14f3680
Number of roots: 1
Root:
0 Kind: bytes rc: 1 Address: 0x019666c0 Offset: 0x00000014
1 Kind: object rc: 0 Address: 0x0181b3f0 Class: CCMDocumentWindow ivar: NSWindow.NSResponder
2 Kind: object rc: 0 Address: 0x014f3680 Class: CCMWindowCtl和文件:
(gdb) info gc-roots 0x181e690
Number of roots: 0我的问题是:
。
发布于 2011-08-02 14:29:40
如果保留计数>0,则不会收集
info malloc 0x019666c0来进一步调试。这将为您提供该地址上的分配历史记录,并应指示谁分配了未释放该结构的结构(或未能调用CFRelease())。或者,您也可以对根链中的任何项执行同样的操作。(是的,这一切都是在window的上下文中进行的。)
https://stackoverflow.com/questions/6900619
复制相似问题