Comments 25
Это статья моего друга, т.к. у него нет возможности опубликовать ее тут, он попросил меня
Полезно, я знал что EXC_BAD_ACCESS это обращение к не существующей переменной, но как его быстро…
Спасибо!
Умилило предложение: «К счастью, ребята из Apple приложили все усилия, чтобы нам помочь»…
2 года занимаюсь разработкой для iPhone'а и не видел более ужасного и не информативного дебаггера (по крайней мере без танцов с бубном и вписывания каких-то хитрых параметров), чем тот, что в XCode. Ад.
А я и не говорил, что там какой-то свой дебаггер, я лишь написал «тот, что используется в XCode».
дебаггер там самый привычный – gdb. А вот оболочка по сравнению в дебаггером в VS для .Net конечно сосет
Уже 2 года пишу под ифоны. Проблем с дебагом не возникало…
Разве что в случаях когда я юзаю помесь c++ и Objective-c — то чтобы gdb понял с каким языком я работаю — приходится писать в консоли чтонибудь типа: set language c++
А вообще среда разработки XCode tools — это лучшее что я видел (тем более что еще и без дополнительных затрат, кроме покупки мака).
Спасибо!

Для меня (балуюсь на java для Android в качестве хобби) это как сказка про Бармалея: такие светлые статьи лишний раз напоминают насколько всё лушче в современных языках программирования и средах исполнения.

Статья вызвала во мне новый виток любви к JVM, Андроиду, open-souce, JetBrains и вообще к человечеству!
такие, где подобные проблемы не возникают в принципе, by deisgn.
ну и чтоб поддержка ide была.

> К счастью, ребята из Apple приложили все усилия, чтобы нам помочь.

Хочешь сделать человека счастливым? Сделай ему плохо, а потом верни назад. Таково отношение эппла к программистам.
и еще вот доп. инфо:
установка MallocStackLoggingNoCompact приводит к тому что дебагер для устройств с 3.1.3 прошивкой не запускается. Выдает «mi_cmd_stack_list_frames not enough frames» при запуске.
Убираем этот флаг — и все сразу запускается.
Для 4.2 устройства такой проблемы этот флаг не вызывает.

Ваш пост первый по запросу NSZombie в рунете — добавте инфо в пост — сэкономте людям время.
К сожалению, это не всегда помогает. Если работать напрямую с С-style указателями, malloc/free, то зомби не дают никакой выгоды. Правда, есть еще несколько флагов:

MallocBadFreeAbort
MallocScribble
MallocStackLogging

(использовать их нужно также)

Что кто делает — можно попробовать догадаться по названию. Ну, и, по опыту ковыряния с Runtime, действительно помогают.
EXC_BAD_ACCESS в общем случае возникает при попытке доступа к области памяти, куда у тебя доступа быть не должно. Уже освобожденный объект — лишь частный случай.

Вчера тут пытался логировать прием информации с сервера

NSData *data =…
NSLog(@«data received, length now is: %@», data.length);

Полдня отлаживался. Опытные товарищи уже знают, в чем тут ошибка :-)
И да, зомби тут не поможет. Приложение просто дропается и всё :-)
1) Немного странно NSUInteger выводить через %@
2) Наверное, не плохо бы проверить на !data
?
Only those users with full accounts are able to leave comments. Log in, please.