【发布时间】:2012-03-24 07:46:33
【问题描述】:
有人能解释一下 Xcode 中这些选项的作用吗?
- 启用涂鸦
- 启用保护边缘
- 启用 Guard Malloc
它们是什么,它们做什么以及它们对调试/测试有多大用处?
谢谢。
【问题讨论】:
有人能解释一下 Xcode 中这些选项的作用吗?
它们是什么,它们做什么以及它们对调试/测试有多大用处?
谢谢。
【问题讨论】:
Scribble 会在内存块被释放后通过覆盖曾经在内存块中的任何数据来显示您正在使用该内存块。
Guard edge 和 Guard Malloc 将通过读写保护内存块来帮助您发现内存溢出和(在某种程度上)use-after-free,以使您的程序在滥用内存时崩溃更加明显。
【讨论】:
上面的“文档”链接通常指向 Xcode,但更具体地说,RN-MallocOptions 详细介绍了这些(和其他)选项。
Jim Kubicek 在Debugging Smashed Memory in Obj-C 中展示了一个很好的示例,包括重要的“如何在 Xcode 中启用这些功能?”问题:
打开“编辑方案”窗口并导航到“诊断”选项卡。您需要打开“启用 Scribble”和“Malloc Stack”。 ...简而言之,“启用涂鸦”将导致分配器将 0xAA 写入新分配的内存并将 0x55 写入释放的内存。 “Malloc Stack”会记录你的内存分配和释放历史。
如果您已经阅读到这里,您可能会对 Apple 的技术说明感兴趣:
【讨论】: