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

У меня (на мой взгляд) очень сложная проблема в моем коде. Это происходит случайным образом в разных местах кода. Проект является проектом 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. После небольшого поиска я нашел следующие вещи в stackru: Как мне установить NSZombieEnabled в Xcode 4? и Xcode malloc ошибка.

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

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

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

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

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

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

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

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

Мои вопросы:

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

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

1 ответ

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

Другие вопросы по тегам