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 отображает сообщение, подобное следующему: