Остановка в точках останова, вызывающая EXC_BAD_ACCESS

Мое приложение работает нормально и, как и ожидалось, но по какой-то причине, когда я устанавливаю точки останова, переход в/переход/возобновление приводит к сбою программы с EXC_BAD_ACCESS. Этого не произойдет, если я удалю/отключу точки останова.

Любой совет?


person Dann    schedule 28.11.2011    source источник
comment
Я не использую нити. Код (я думаю) не имеет значения, поскольку он падает ВЕЗДЕ, где я ставлю точку останова, независимо от того. И, как я уже сказал, нет сбоя, если нет точки останова?!   -  person Dann    schedule 28.11.2011
comment
Можно попробовать почистить и восстановить. Иногда Xcode путается и ссылается на неправильные таблицы и т. д.   -  person Hot Licks    schedule 28.11.2011
comment
Много раз пробовал чистить и восстанавливать - безрезультатно :(   -  person Dann    schedule 29.11.2011
comment
Я также начал получать эту проблему после обновления до Xcode 4.2.1. Код отлично работал заранее с точками останова. (Ты не один)   -  person gak    schedule 21.01.2012


Ответы (7)


Насколько я вижу, LLDB не работает в Xcode 4.2 и 4.2.1. Переключитесь на GDB в настройках «Редактировать схему».

Точки останова работают так, как и ожидалось, после переключения на GDB.

Диалоговое окно редактирования схемы

person gak    schedule 21.01.2012
comment
Я использовал LLDB, и все мои точки останова работали правильно, пока у меня были допустимые выражения. Как только я определил недопустимую позицию (super.position в CCLayer), xCode, казалось бы, закрывался или аварийно завершал работу. Это даже не позволило бы мне удалить недопустимое выражение, так как оно не сломалось бы там. Когда я перешел на GDB, я увидел недопустимое выражение и удалил его. Затем я переключился обратно на LLDB, и проблема исчезла. Спасибо за помощь. - person Matt Becker; 22.06.2012
comment
ПРАВИЛЬНЫЙ ОТВЕТ - ОБНОВИТЬ XCODE 5.0.2, как указал другой комментатор ниже. Прости за крик. знак равно - person RanLearns; 03.12.2013
comment
Где находится эта опция? - person vir us; 26.08.2014

Всем, кто может столкнуться с тем же самым с Xcode 5.0.1 и Mavericks: попробуйте удалить все свои схемы и автоматически создать их снова - это исправило это для меня.

person Andrew    schedule 24.10.2013
comment
Воссоздание схем мне не помогло. Я заметил, что это происходит на моих устройствах iOS 6 (iPhone 5, iPad 2), но не на моем устройстве iOS 7 (iPhone 4s). - person Symmetric; 26.10.2013
comment
Странно, это происходило на моем iPad 2 с iOS 6. Попробуйте удалить и добавить точки останова после воссоздания схем. - person Andrew; 26.10.2013
comment
Сейчас это работает, но я не уверен, почему. Я пробовал много вещей... удаляя приложение с моего устройства, перезагружая его, перезагружая Mac и т. д. Затем я столкнулся с другой, не связанной с этим проблемой (насколько я знаю), когда Xcode никогда не завершал сборку. Боюсь, я не помню, как я его нашел, но оказалось, что моя цепочка для ключей была перепутана с 46 000 сертификатов и 93 000 ключей с именем com.apple.ubiquity.peer-uuid. Чтобы открыть брелок, понадобилось около часа! Вот ссылка на страницу, которая помогла мне решить эту проблему: discussions.apple.com/ thread/3396579?start=0&tstart=0 Теперь обе проблемы устранены. Давай рисуй! - person Symmetric; 26.10.2013
comment
Ах, нашел вопрос SO, который привел меня к проблеме с цепочкой ключей: stackoverflow.com/questions/10404560/ - person Symmetric; 26.10.2013
comment
Я также пытался удалить и добавить все схемы, но это не решило мою проблему. угу! - person Julian B.; 31.10.2013
comment
Похоже, сейчас лучше всего вернуться к Xcode 5.0.0 — разработчику. apple.com/downloads/index.action?name=Xcode скачать его можно отсюда. И просто подождите, пока Apple выпустит 5.0.2. - person Andrew; 31.10.2013
comment
Apple выпустила 5.0.2, и ошибка исправлена. - person Andrew; 12.11.2013
comment
5.0.2 исправил это и для меня. - person Steve Moser; 18.11.2013

Где вы используете lldb вместо gdb? Я получаю это систематически с Xcode 4.2.1 и lldb. Переключение обратно на gdb (боооооо) решает проблему.

person Guillaume Laurent    schedule 05.12.2011

Я использую Xcode 4.3.2, и Xcode автоматически обновляет отладку до LLDB (всплывающее диалоговое окно, и я подтверждаю это). Это действительно кошмар, он падает, когда я вхожу в любой вызов функции 8-9 из 10.

Вернуться к GDB теперь кажется лучше!

person Hill    schedule 28.04.2012

Это была ошибка с XCode 5.0.1 и Mavericks. Apple выпустила 5.0.2, и ошибка исправлена!

person Mário Carvalho    schedule 14.11.2013

EXC_BAD_ACCESS означает, что у вас где-то проблема с памятью - очень вероятно, что что-то высвобождается, когда вы ожидаете, что оно все еще существует (возможно, результат autorelease). Запустите статический анализатор, чтобы найти его. Я предполагаю, что вы видите сбой, потому что отладчик агрессивно занимает память, когда вы загружаете точки останова и, следовательно, помечаете проблему где-то еще.

person Alan Zeino    schedule 28.11.2011

Для чего это стоит, у меня та же проблема. Я могу взять код, который, как я знаю, является правильным, и если я войду в него с помощью lldb, он выйдет из строя после достижения точки останова. Я также получаю такой вывод, когда пытаюсь распечатать любые местные жители

(lldb) p self
error: use of undeclared identifier 'self'
error: 1 errors parsing expression

Похоже, что lldb не работает в Xcode 4.2.1. Единственный совет, который у меня есть, это переключиться на gdb на данный момент.

person Colin    schedule 13.12.2011