Подтвердить что ты не робот

Xcode - каракули, защитные края и защита malloc

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

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

что это такое и что они делают, и насколько они полезны для отладки/тестирования?

спасибо.

4b9b3361

Ответ 1

Из documentation.

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

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

Ответ 2

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

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

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

Если вы зачитали это далеко, вы, вероятно, будете заинтересованы в Apple Техническая нота TN2239 iOS Debugging Magic или Техническая нота TN2124Mac OS X Отладка Magic.