У меня очень запутанная авария, когда у меня заканчивается моя мудрость ...
Первый журнал аварий:
Дата / Время: 2012-02-14 10: 55: 09.771 + 0100
Версия ОС: Mac OS X 10.7.3 (11D50b)
Версия отчета: 9
Сломанная резьба: 0
Тип исключения: EXC_CRASH (SIGABRT)
Коды исключения: 0x0000000000000000, 0x0000000000000000
Информация о приложении:
iPhone Simulator 272, iPhone OS 5.0 (iPhone / 9A334)
abort () называется
* Завершение работы приложения из-за неисследованного исключения «NSInvalidArgumentException», причина: «* - [__ NSPlaceholderDictionary initWithCapacity:]: емкость (2147483648) является нелепой»
* Первый вызов стека вызовов:
(0x25ca052 0x21d8d0a 0x24f21b7 0x252597b 0x688e2 0x6a3b5 0x41b2f 0x1f29d 0x1f87e 0xba335c 0xbabd0d 0xcc8a1c 0xcc93a9 0xf3de39 0xf3d143 0xf3e3cf 0xf40a31 0xf4098c 0xf393e7 0xca1812 0xca1ba2 0xc88384 0xc7baa9 0x2333fa9 0x259e1c5 0x2503022 0x250190a 0x2500db4 0x2500ccb 0x2332879 0x233293e 0xc79a9b 0x23ad 0x2325)
Тема 0 Сбой:
0 libsystem_kernel.dylib 0x983379c6 __pthread_kill + 10
1 libsystem_c.dylib 0x939e7f78 pthread_kill + 106
2 libsystem_c.dylib 0x939d8bdd прервать + 167
3 libc ++ abi.dylib 0x01fa5e78 abort_message + 50
4 libc ++ abi.dylib 0x01fa389e _ZL17default_terminatev + 34
5 libobjc.A.dylib 0x021d8f4b _objc_terminate + 94
6 libc ++ abi.dylib 0x01fa38de _ZL19safe_handler_callerPFvvE + 13
7 libc ++ abi.dylib 0x01fa3946 std :: terminate () + 23
8 libc ++ abi.dylib 0x01fa4b3e __cxa_rethrow + 83
9 libobjc.A.dylib 0x021d8e49 objc_exception_rethrow + 47
10 CoreFoundation 0x02500e10 CFRunLoopRunSpecific + 304
11 CoreFoundation 0x02500ccb CFRunLoopRunInMode + 123
12 GraphicsServices 0x02332879 GSEventRunModal + 207
13 GraphicsServices 0x0233293e GSEventRun + 114
14 UIKit 0x00c79a9b UIApplicationMain + 1175
15 LVM 0x000023ad main + 125 (main.m: 14)
16 LVM 0x00002325 старт + 53
Я работаю под Lion 10.7.3 с Xcode 4.2.
Анализатор не показывает ошибку, и проект работал стабильно до вчерашнего дня.
Сама ошибка вызвана не во время установки, а жестом, который перезагружает необходимые данные для отображения.
На первый взгляд кажется ясным: я выделил экземпляр NSDictionary с недопустимой емкостью (2147483648 на самом деле является подписанным -2147483648, так что это может быть артефакт переполнения).
- В моей системе есть все необходимые настройки для остановки при сбое: NSZombieEnabled,
obj_exc_throw и т. д. Ну, это останавливается, но в основном цикле в main.m. Так что никакой информации, чтобы увидеть.
- Итак, я посмотрел все мои экземпляры NSXXDictionary и гарантировал, что все они имеют константу
инициализаторы емкости или использовать их [... словарь] распределения. Первый сюрприз: это все еще
аварии.
- Хорошо, может быть, Xcode иногда неправильно перекомпилирует изменения? Xcode закрыт,
очистить, восстановить, выбросить каталог сборки (build, caches, dstroot), перезапустить, что угодно.
Все та же авария.
- Как видите, в рабочем цикле происходит сбой, поэтому я не получаю много информации о
место нахождения. Хорошо, запустите Profile-> System Trace и посмотрите, смогу ли я найти .... Системная трассировка дает сбой! 8-0
- Хм .... у моих коллег нет проблем с текущими изменениями, поэтому я попытался найти с SVN
где именно проблемы возникают. И вот я снова застрял: ошибка исчезает и
появляется, поэтому я не могу определить причину.
Итак ... есть ли другие структуры данных (NSArray и т. Д.) Или функции, которые могут вызывать это странное поведение? Или у вас есть хорошие советы по отладке?
Спасибо за любую полезную помощь.
РЕДАКТИРОВАТЬ: ошибка была найдена, и это был я :(. См. Ответ ниже