Xcode – 自由曲线,守卫边和守卫malloc

有人可以解释Xcode中的这些选项是做什么的?

  • 启用S​​cribble
  • 启用防护边缘
  • 启用Guardoc Malloc

他们是什么,他们做了什么以及他们对debugging/testing有多大用处?

谢谢。

从文档 。

  • 启用S​​cribble。 用0xAA填充分配的内存,用0x55释放内存。
  • 启用防护边缘。 在大量分配之前和之后添加保护页面。
  • 启用Guardoc Malloc。 使用libgmalloc来捕获常见的内存问题,如缓冲区溢出和免费使用。

Scribble将使得它非常明显,你可以在释放之前使用内存块中的任何数据来释放内存块之后使用内存块。
Guard边缘和Guard Malloc将帮助你发现内存溢出和(在一定程度上)通过读写保护内存块来释放内存,从而使你的程序在误用内存时更加明显。

上面的“文档”链接通常是针对Xcode的,但更具体地说, RN-MallocOptions涵盖了这些(和其他)选项的细节。

Jim Kubicek 在Obj-Cdebugging碎片内存中展示了一个很好的例子,其中包括重要的“如何在Xcode中启用这些内存 ? 题:

打开“编辑scheme”窗口并导航到“诊断”选项卡。 你会打开“启用Scribble”和“Malloc堆栈”。 …简而言之,“Enabled Scribble”将使分配器将0xAA写入新分配的内存,并将0x55写入释放的内存。 “Malloc Stack”将logging你的记忆的分配和自由历史。

如果您已经阅读了这些内容,您可能会对Apple的技术说明TN2239 iOSdebugging魔术或技术说明TN2124Mac OS Xdebugging魔术感兴趣 。