2015-01-28 4 views
0

При отладке приложения iOS, то есть iOS 8.1/8.2, когда приложение вылетает где-то, похоже, что он падает только на int main в main.m или он сбой в действительной кодовой части.Отладка устройства Xcode/iOS

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

Я пробовал воссоздать схемы. Я проверил, что символы не удаляются и что оптимизаторы не выполняются компилятором в настройках сборки.

В частности, это относится только к отладке устройства, а не к симулятору (который я никогда не использую).

Как его получить, чтобы вырваться на линию Obj-C или Swift, которая вызвала исключение/что-то еще.

Благодаря

Ade

ответ

1

Вы можете добавить Исключение точки останова, это остановит ваш код в месте возникновения «ошибки».

  • Перейти к Breakpoint Навигатор (⌘ CMD +)
  • Нажмите на знак "+" в нижней
  • Выберите Добавить Exception Breakpoint

enter image description here

Исключение точки останова не установлено ни в одной строке. Вот настройки по умолчанию:

enter image description here

+0

Это проблема, с которой я сталкиваюсь ... Несмотря на то, что, глядя на стек вызовов, иногда это не так полезно, поэтому знать, где разместить точку останова исключений, - это немного кошмар. Могу ли я поместить их в начале методов, чтобы пометить хотя бы метод подстрекательства? Или это должна быть именно эта линия? Причина, по которой я прошу, состоит в том, что одно из моих приложений, где происходят исключения, имеет довольно длинный код из-за того, что он делится между mac и iOS. –

+0

Исключение точки останова не задано ни на одной конкретной строке. Он должен вызываться, когда происходит исключение. Ваше приложение точно остановится на коде, который вызвал исключение. Смотрите новый снимок экрана. –

+0

Извинения за сообщение, которое я удалил !!! Я сейчас попробую! –

0

Xcode обычно будет показывать вам main.c, когда происходит сбой, то это означает только то, что подпрограмма, что называется в main.c разбился.

Самый простой способ узнать, что именно произошло, - это поставить точку останова где-то в вашей программе, прямо перед точкой, которая может быть подозрительной, по вашему мнению. Если приложение падает до появления контрольных точек, установите точку останова раньше, пока она не попадет перед сбоем. Когда точка останова запускается, проследите приложение шаг за шагом, чтобы узнать точную причину сбоя.

Кроме того, часто бывает полезно просмотреть стек вызовов.

+0

Удаляется мой последний комментарий, но посмотрите на принятый ответ. Это SURE очень помогло мне в выборочной отладке; т.е. выборочно размещая точки останова и проводя шаг за шагом, чтобы найти область исключений ... Спасибо за помощь, хотя .. Я думаю, что вы имеете в виду Cpp или C, который вникает в фактический код, а не в Assy .... –