iPhone - ошибки отладки "освободившийся указатель не выделен"
При чрезмерном освобождении указателя вы можете увидеть такую ошибку, как
"освобожденный указатель не выделен"
При отладке с помощью симулятора я добавляю аргумент сборки MallocStackLogging = YES - это позволяет мне использовать malloc_history в терминале для отслеживания того, где я перегрузил указатель.
Если я отлаживаю на устройстве с этим аргументом сборки, я получаю всевозможные ошибки консоли "не могу создать файлы журнала стека" и т.д.
Как ни странно, я получаю некоторые чрезмерно освобожденные ошибки указателя, появляющиеся на устройстве, но не на симуляторе.
Кто-нибудь имел опыт отслеживания их с помощью самого устройства?
Спасибо!
4 ответа
Еще один способ сделать это. Обязательно включите NSZombie, чтобы он сообщал адрес памяти объекта, который получает дополнительную версию. Затем запустите с Performance Tool->Object Allocations. Это поднимет инструменты. Посмотрите журнал консоли, предоставленный организатором Xcode. Как только вы получите сбой, ищите адрес памяти в приборах. Вы увидите всю историю mallocs / освобождения на этом объекте, а также ссылки прямо в ваш код.
Вам необходимо установить переменные env MallocStackLogging в целевом исполняемом файле...
Чтобы получить доступ к этим настройкам, выберите свой исполняемый файл на панели "Группы и файлы" в XCode, затем "Информация".
Перейдите на вкладку "Аргументы" и добавьте следующие записи в поле "Переменные для установки в среде":
Пожалуйста, проверьте программу на наличие утечек памяти. Также проверьте автоматические выпуски и правильно ли вы освобождаете объекты. Также нам нужно проверить, выделена ли выделенная память или нет. Вам также нужно быть осторожным в отношении автоматического выпуска, потому что мы можем случайно освободить массив или строку или любой объект, который уже автоматически освобожден... надеюсь, это поможет и работает!
Совет: Вы можете проверить наличие утечек, проанализировав свой проект (нажмите shift+command+k)