Отладка ошибок в Xcode (debugging) с объяснениями и примерами

Поиск и исправление ошибок в вашем приложении не такое увлекательное занятие? Вам, вероятно, не нравится отладка ошибок в Xcode, но это не должно быть проблемой. В этой статье вы узнаете несколько методик, которые упростят отладку ваших приложений.

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

Отладка ошибок в Xcode с помощью функции print()

Cамая простая техника отладки – это использование функции print():

let tweet = Tweet()
tweet.save()
 
print("Сохраненям твит с ID = \(tweet.id)")

В приведенном выше коде мы сохраняем гипотетический объект Tweet. В последней строке мы выводит текст на консоль. Вывод подобных сообщений поможет вам понять, что происходит в вашем коде.

Ошибки компиляции и ошибки исполнения программы

Есть два типа ошибок:

  • Ошибки компиляции: эти ошибки появляются, когда ваше приложение компилируется. Например, вы сделали опечатку, и компилятор Swift сообщил вам об этом.
  • Ошибки во время выполнения программы: эти ошибки возникают, когда ваше приложение работает на реальном устройстве.

Ошибки компиляции обычно появляются в редакторе Xcode и чаще всего в консоли. Ошибки во время выполнения всегда отображаются в консоли и редко в редакторе Xcode.

В обоих случаях вы увидите сообщение с описанием ошибки. Когда ваше приложение будет запущено на реальном iPhone и вы подключите iPhone к вашему Mac, вы сможете увидеть сообщения об ошибках, которые выдает приложение. Во многих случаях Xcode даже укажет на строку, на которой произошла ошибка.

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

Как найти первопричину ошибки?

Исправление ошибок, какими бы разочаровывающими они ни были, может быть очень увлекательным процессом. Это как быть детективом, но при этом исследовать код. Подумайте, как много вы можете узнать о разработке для iOS, решая определенную проблему.

Можно выделить 3 типа ошибок:

  • Которые дают четкое сообщение об ошибке, например «Index out of bounds».
  • У которые нет четкого сообщения об ошибке, например EXC_BAD_ACCESS.
  • У которых вообще нет сообщения об ошибке.

Когда вы делаете отладку ошибок в XCode, вы всегда будете стремиться найти сообщение об ошибке. Вы не можете исправить ошибку, если у вас нет четкого сообщения об ошибке. Также вы должны иметь возможность воспроизвести ошибку при необходимости. Таким образом, вы можете проверить, действительно ли вы разобрались с ошибкой.

Процесс исправления ошибок

Вот рабочий процесс для исправления ошибок:

  • Ваше приложение вылетает. Есть ошибка!
  • Вы пытаетесь найти сообщение об ошибке. Сообщения об ошибках часто отображаются в консоли XCode, но, возможно, вам придется копать немного глубже.
  • Вы пытаетесь понять сообщение об ошибке.
  • Вы находите решение, чтобы исправить ошибку.

Во многих случаях, особенно если вы начинающий программист, вы можете найти в Google найденное сообщение об ошибке. В большинстве случаев Stack Overflow или блог по программированию содержит ответ на ошибку, которую вы видите. Основываясь на том, что вы нашли, вы реализуете решение в своем собственном приложении.

Отладка ошибок с помощью точек остановки (breakpoints) в Xcode

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

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

отладка ошибок в xcode

На изображении выше вы можете увидеть:

  • Трассировка стека. Вы можете представить себе трассировку стека как историю функций. С его помощью вы можете увидеть все функции, которые были вызваны до достижения точки остановки. Например, на скриншоте вы можете увидеть текущую функцию viewDidLoad().
  • Точка остановки. Вы можете добавить точку остановки, нажав на номер строки. Должна появиться синяя стрелка. Вы можете деактивировать точку остановки, перенеся ее в рабочую область.
  • Действия точки остановки. При достижении точки остановки вы можете выполнить несколько действий, например, продолжить выполнение кода.
  • Значения и состояние приложения. Вы можете проверить значения в текущей точке выполнения приложения. В этом примере вы можете ясно увидеть содержимое массива names.

Давайте посмотрим на инструменты, которые вы можете использовать с точками остановки:

инструменты отладки

Слева направо, у вас есть несколько вариантов:

  • Скрыть область отладки.
  • Деактивировать точки остановки. Эта кнопка активирует и деактивирует все точки остановки для текущего сеанса.
  • Продолжить выполнение программы. Это продолжит выполнение вашего кода, пока отладчик не достигнет следующей точки остановки. Помните, что это может быть одна и та же точка остановки, например, когда ваш код повторяется или снова достигает той же точки.
  • Step over – это продолжит выполнение вашего кода, но только до следующей строки.
  • Step into – это продолжит ваш код внутри текущий строки. Вы идете на один уровень глубже, например, переходя к другой функции.
  • Step out – это продолжает код, выходя из текущей функции. Вы идете на один уровень выше.

Точки остановки и пошаговое выполнение кода

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

Думайте о своем коде как о древовидной структуре. Вы начинаете с одной точки, затем входите в функцию, а когда функция завершается, вы снова выходите из функции.

На изображении ниже вы можете видеть цикл for, который вычисляет сумму массива чисел.

отладчик ошибок xcode пример работы

  • Цикл запустился 5 раз, от n=0 до 4.
  • На данный момент n = 5 numbers[5] еще не был добавлен в sum.
  • Переменная sum равна 1 + 3 + 7 + 9 + 14.

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

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

Читайте также:
Добавить комментарий

Ваш адрес email не будет опубликован.