Xcode - каракули, защитные кромки и защитный malloc - PullRequest
52 голосов
/ 06 марта 2012

Может кто-нибудь объяснить, что делают эти опции в XCode?

  • Включить Scribble
  • Включить защитные края
  • Включить Guard Malloc

что они и что они делают и насколько они могут быть полезны для отладки / тестирования?

спасибо.

Ответы [ 2 ]

47 голосов
/ 06 марта 2012

Из документации .

  • Включить Scribble. Заполните выделенную память 0xAA и освободите память 0x55.
  • Включить охранные края. Добавьте защитные страницы до и после больших выделений.
  • Включить охрану Маллока. Используйте libgmalloc для обнаружения распространенных проблем с памятью, таких как переполнение буфера и использование после освобождения.

Scribble сделает очевидным, что вы используете блок памяти после его освобождения, перезаписав все данные, которые раньше были в блоке памяти после освобождения.
Защитные края и Guard Malloc помогут вам найти переполнение памяти и (в некоторой степени) использование после освобождения за счет защиты блоков чтения и записи, чтобы сделать вашу программу более очевидной, если программа неправильно использует память.

5 голосов
/ 26 апреля 2013

Ссылка "документации" выше относится к Xcode в целом, но более конкретно RN-MallocOptions подробно описывает эти (и другие) опции.

Джим Кубичек показывает хороший пример в Отладка Smashed Memory в Obj-C , включая важный вопрос «Как включить их в XCode?»вопрос:

Откройте окно «Редактировать схему» и перейдите на вкладку «Диагностика».Вы захотите включить «Включить Scribble» и «Malloc Stack».... короче говоря, «Enabled Scribble» заставит распределитель записать 0xAA во вновь выделенную память и записать 0x55 в освобожденную память.«Malloc Stack» будет регистрировать распределение и свободную историю вашей памяти.

Если вы прочитали это далеко, вы, вероятно, заинтересуетесь Техническими примечаниями Apple:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...