4

Я использую ARC в своем приложении с основными данными и потоками и т. Д., После выполнения всей этой тяжелой работы, чтобы получить работу с данными с потоками без каких-либо сбоев, теперь я получение новой аварии по причине:double free *** установить точку останова в malloc_error_break для отладки в ARC

double free*** set a breakpoint in malloc_error_break to debug 

Как я должен справиться с этим? Я не контролирую счетчик объектов.

+0

Это не имеет никакого отношения к счету сохранения объектов. Это сообщение является одним из встроенных сообщений об ошибках glibc. Этот конкретный указывает, что вы явно использовали free() в той же области памяти дважды. –

+0

Нет. Я не делал ничего подобного free() или malloc(). –

+0

Тогда не могли бы вы предоставить немного более отладочную информацию? Как и некоторые сообщения об ошибках, может быть, вы должны скомпилировать с -g и выполнить обратную трассировку в gdb и т. Д., Иначе мы не сможем помочь ... –

ответ

8
  1. Enable Zombie
  2. Перейдите по этой ссылке: http://iphone2020.wordpress.com/2012/02/23/capturing-exceptions-while-debugging/. Это предложит точную точку сбоя.
+1

Включение зомби создает другую проблему утечки в ARC .. –

+0

Используйте его только для целей тестирования. При создании сборки удалите ссылку !! –

+0

Эта ссылка кажется нисходящей (никогда не загружается). Можете ли вы дать некоторое представление о том, что нужно сделать. Я использовал Зомби в прошлом, но не так широко. @NaveenThunga (спасибо!) –

1

Если вы хотите знать, кто уничтожал распределение:

Просто нарушение, как сообщение предлагает даст вам подсказку.

Если вы хотите знать, кто создал распределение:

Хотя вы также можете сделать это из командной строки с помощью таНос протоколирования стека, это может быть нежнее введением использовать инструменты. Запустите программу с записью выделения, включенной в инструментах, воспроизведите проблему, затем найдите адрес в инструментах двойной свободной - он покажет вам обратную сторону создания распределения. затем укажите, почему это распределение было освобождено дважды.

+0

Не могли бы вы поделиться шагами по добавлению точки останова для malloc_error_break? – Gujamin

+0

@Gujamin, я подозреваю, что вы не искали сначала - я ввел 'malloc_error_break' в переполнение стека. первый результат отвечает на ваш вопрос (шаг за шагом): http://stackoverflow.com/questions/6923853/how-to-set-malloc-error-break-in-xcode4 – justin

+0

Я выполнил эти шаги (добавив 'malloc_error_break' символическая точка останова), но она не остановилась нигде в моем коде и снова сообщила« *** ошибка: не может выделить область *** установить точку останова в malloc_error_break для debug' – Gujamin

 Смежные вопросы

  • Нет связанных вопросов^_^