IOS Зомби обнаружение - PullRequest
       35

IOS Зомби обнаружение

5 голосов
/ 02 марта 2012

У меня (на мой взгляд) очень сложная проблема в моем коде.Это происходит случайным образом в разных местах кода.Проект является проектом ARC.

Так что моя программа иногда падает с такими сообщениями:

malloc: *** error for object 0xd2dd8b0: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug

Я уже установил точку останова для malloc_error_break, но не получаю никакой информации из нее.Когда код падает, XCode показывает мне место в коде, где это происходит.Но, как я уже сказал, сбои происходят случайно и не всегда.Но кажется, что сбои сосредоточены на конкретной строке кода.

Теперь я хотел отладить его, используя инструменты, поставляемые с xcode.После небольшого поиска я нашел следующие вещи в stackoverflow: Как настроить NSZombieEnabled в Xcode 4? и Ошибка Xcode malloc .

Итак, первая ссылкаописывает, как запустить обнаружение зомби из самого xcode, нажав кнопку запуска в xcode и выбрав «Профиль».Проблема в том, что я не могу найти «зомби» при выборе шаблона для документа трассировки в моей версии xcode (4.2).Но если я запускаю инструменты вне xcode (например, из finder), я могу выбрать зомби.

Хорошо, вот что я сделал:

1) Запустите инструменты из поиска и выберите профиль "Зомби".

2) Запустите приложение iphone из xcode в симуляторе iphone(нормальный запуск (не профильный или отладочный)).

3) В инструментах «Выберите цель» -> «Присоединить к процессу» -> «Симулятор iPhone (57529)».

4)Инструменты начинают что-то перечитывать (я не могу понять, что он делает).

5) Начните играть с приложением, пока оно не выйдет из строя.

В конце концов приложение вылетает, и вот скриншот инструментовпосле сбоя приложения: enter image description here

Мои вопросы:

1) Достаточно ли зомби для моей проблемы или мне следует использовать другой инструмент анализа?

2) Что мне говоритинструменты на выходе после сбоя?

1 Ответ

6 голосов
/ 07 марта 2012

Судя по вашему описанию проблемы, ваш сбой вызван чем-то помимо доступа к объекту зомби.Если ваше приложение обращается к освобожденному (зомби) объекту, при использовании шаблона «Зомби» Instruments отображает следующее сообщение:

enter image description here

...