2011-11-30 11 views
28

В прошлом, при использовании старого и хорошего Xcode 3, каждый раз, когда у меня был сбой, Xcode останавливался на оскорбительной строке, показывающей крушение. Это были хорошие времена, приятно отлаживать.Xcode всегда останавливается на main.m после крушения

Теперь с Xcode 4.2, каждый раз, когда приложение падает, он останавливается на main.m на этой линии

int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate"); 

, что не дает никакого ключа к тому, что причиной аварии. Проблема может быть в любом классе, но она всегда останавливается на main.m при ее сбое.

Есть ли способ заставить его работать правильно снова?

благодаря

примечание: я спросил это раньше на SO, но решение, учитывая, что время было доказано, что не является удовлетворительным и проблема остается.

+0

Для дальнейшего использования, не публикуйте тот же вопрос снова. Измените исходный вопрос, чтобы предоставить новую информацию и вернуть ее на первую страницу. –

+0

Я попросил удалить старый. – SpaceDog

ответ

42

Они изменили поведение, следовать this tutorial to break on all exceptions

EDIT:(ссылка может гнить, так что я буду дублировать информацию здесь)

Одна из скрытых драгоценных камней в Xcode 4.2 является «Exception Breakpoint ". Когда вы включите его, ваша отладочная жизнь станет намного проще, потому что всякий раз, когда в приложении добавляется исключение, Xcode выводит строку кода, из-за которой возникает исключение. Это особенно полезно, если окно стека вызовов пусто (что я видел иногда во время работы с приложениями iOS). Вместо того, чтобы полагаться на краткое сообщение об ошибке на панели «Вывод», которое не содержит гораздо больше, чем тип исключения и его сообщение об ошибке, вы можете увидеть, где именно проблема!

Вы можете добавить Exception Breakpoint, открыв панель Breakpoint Navigator, и нажав на кнопку X в нижнем левом углу:

После нажатия кнопки «Добавить Exception Breakpoint ...» пункт меню , вы увидите этот вид конфигурации точки останова открыть:

Нажмите кнопку Готово, и вы будете новый Exception Breakpoint в списке Ь reakpoints. Если вы хотите, чтобы все ваши Xcode рабочие области включают Exception Breakpoint, щелкните правой кнопкой мыши (Ctrl + клик) на нем и откройте «Переместить точку останова» пункт меню:

После нажатия кнопки «User» в подменю вы увидите, что точка останова исключений находится в группе контрольных точек пользователя. Откройте еще один проект и автоматически включите его в список точек останова.

Днем отладки!

+13

Спасибо. Они должны быть безумными. В чем смысл этого изменения? Сделать жизнь разработчиков несчастной? благодаря!!!!!!!!!!!!!!!! – SpaceDog

+0

любой способ установить это как постоянный на xcode? – SpaceDog

+0

бит в конце учебника о перемещении его в «Пользователь» делает его постоянным – BarrettJ

5

Просто попробуйте следующие шаги, которые сработали для меня.

  1. Открыть настройки, выберите вкладку «Поведения».
  2. Выберите «Запуск выходов неожиданно» в левой колонке.
  3. Выберите «Показать отладчик с текущими видами».

К сожалению, это вернулись к main.m в редакторе еще раз :) Теперь вы должны следовать ниже шаги

  1. Открыть настройки, выберите вкладку поведений.
  2. Просто зайдите в «бежать завершает»
  3. Там найти «Показать» линии и установите флажок
  4. На той же строке изменить цель, чтобы перейти к «Current» в раскрывающемся меню.

Это должно работать

+1

ничего себе. Следующий выпуск Apple должен усложнить настройку. Thanks – SpaceDog

+0

Hahah! У них все еще есть ** EXACT ** те же ошибки. Просто не имеет смысла переходить к файлу, который ничего не говорит вам. Если я уберу все флажки, я предполагаю (например, что я научил меня Apple), что ОТВЕЧАЕТ. Вместо этого происходит что-то. * «Если пользователь не хочет ничего делать для этого события, перейдите в случайный бессмысленный файл» * Sad. –

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