NSZombieEnabled не сообщает тип объекта, вызывающий ошибку EXC_BAD_ACCESS - PullRequest
1 голос
/ 27 октября 2009

У меня сбой, который происходит по какой-то причине в глубине UIKit; ошибка EXC_BAD_ACCESS происходит что-то вроде 8 вызовов глубоко в вызове dismissModalViewController. Я попытался включить NSZombieEnabled для моего исполняемого файла, но журнал консоли печатает ту же ошибку независимо от того, включены ли зомби, и я не знаю, какой объект вызывает проблему. Мне чего-то не хватает, что мне нужно сделать, чтобы консоль выводила правильную информацию?

Ответы [ 3 ]

1 голос
/ 27 октября 2009

Подробнее об использовании зомби здесь .

Запустите это в GDB. Когда вы получите EXC_BAD_ACCESS, посмотрите на стек в этой точке (используйте команду gdb's where или запустите отладчик Xcode GUI). Если у вас все еще есть проблемы, опубликуйте стопку в исходном вопросе.

Также зомби помогут вам, только если вы имеете дело с NSObjects. Если вы используете низкоуровневые подпрограммы malloc / free, зомби ничего не покупают за эти ассигнования.

1 голос
/ 28 октября 2009

Одна вещь, которую я узнал в прошлые выходные, когда NSZombieEnabled, похоже, не работал вообще - убедитесь, что вы не передаете не-объект в некоторый код.

В моем случае я возвращал NSString как просто "string" вместо @ "string". Это означало, что я перезаписывал объект NSString c-строкой. Когда я позже попытался написать новое значение в этом объекте, я получил BAD_ACCESS. NSZombie's не мог помочь, потому что это был не объект, который я пытался перезаписать, а эта c-строка.

В качестве отступления, обработайте все предупреждения как ошибки в XCode - хотелось бы, чтобы они отображались в RED в графическом интерфейсе IDE - иногда их легко пропустить.

0 голосов
/ 27 октября 2009

Звучит так, как будто что-то переиздано в вашем Modal View Controller. Начните с комментирования новых строк, пока они не перестанут прерываться.

...