Отладка приложений Xamarin.iOS

Для отладки приложений Xamarin.iOS можно использовать встроенный отладчик Visual Studio или Visual Studio для Mac.

Используйте встроенное средство отладки Visual Studio для Mac при отладке кода C# и других управляемых языков. Используйте LLDB при отладке кода C, C++ или Objective C, привязываемого к проекту Xamarin.iOS.

Примечание.

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

Отладчик Xamarin.iOS интегрирован в IDE и позволяет разработчикам выполнять отладку приложений Xamarin.iOS, созданных на любом поддерживаемом Xamarin.iOS управляемом языке, в симуляторе или на устройстве.

Отладчик Xamarin.iOS использует "мягкий" отладчик Mono, который обеспечивает взаимодействие сгенерированного кода и среды выполнения Mono со средой IDE в процессе отладки. Этим он отличается от "жестких" отладчиков, таких как LLDB или MDB, которые контролируют выполнение отлаживаемой программы без взаимодействия с ней и учета ее особенностей.

Задание точек останова

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

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

The Breakpoints pad

Если панель точек останова не отображается автоматически, можно сделать ее видимой, выбрав пункт "Просмотр > точек останова Для отладки Windows > "

Прежде чем приступать к отладке любого приложения, обязательно переведите конфигурацию в режим Отладки, поскольку он содержит полезный набор инструментов для выполнения отладки, включая точки останова, визуализаторы данных и просмотр стека вызовов:

Начать отладку

Чтобы начать отладку, выберите целевое или аналогичное устройство в IDE:

После этого разверните приложение, нажав кнопку Воспроизвести.

При попадании в точку останова код выделяется желтым цветом:

The code will be highlighted yellow

На этом этапе вы можете использовать средства отладки, например проверку значений объектов, для получения дополнительных сведений о том, что происходит в коде:

Displaying a color value

Условные точки останова

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

Чтобы задать условную точку останова, перейдите в окно Свойства точки останова, что можно сделать двумя способами:

  • Чтобы добавить условную точку останова, щелкните правой кнопкой мыши поле редактора слева от номера строки кода, где требуется задать точку останова, а затем выберите пункт "Создать точку останова":

    Select New Breakpoint

  • Чтобы добавить условие в существующую точку останова, щелкните ее правой кнопкой мыши и выберите пункт *Свойства точки останова или на панели точек останова нажмите кнопку свойств, как показано ниже:

    The Breakpoints Pad

Затем вы можете ввести условие, при котором эта точка останова активируется:

Enter the condition for the breakpoint to occur

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

В Visual Studio для Mac они будут выглядеть так:

The Debug tools enable the developer to get control over the program’s execution

К ним относятся:

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

Точки останова

Необходимо отметить, что iOS дает приложению всего несколько секунд (10) на запуск и выполнение метода FinishedLaunching в делегате приложения. Если приложение не выполнит метод в течение 10 секунд, iOS прервет этот процесс.

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

Диагностика устройства

Если при настройке отладчика возникает ошибка, включите подробную диагностику, добавив "-v -v -v" к дополнительным аргументам mtouch в параметрах проекта. Это позволит отобразить подробные сведения об ошибке в консоли устройства.

Отладка по беспроводному соединению

По умолчанию Xamarin.iOS использует USB-подключение для отладки приложений на устройствах. Однако иногда при разработке приложений, в которых применяется ExternalEccessory, необходимо использовать USB-устройство для проверки подключения и отключения кабеля. В таких случаях вы можете выполнять отладку по беспроводной сети.

Дополнительные сведения о развертывании и отладке по беспроводному соединению см. в этом руководстве.

Технические сведения

Xamarin.iOS использует новый "мягкий" отладчик Mono. В отличие от стандартного отладчика Mono, который представляет собой программу, управляющую отдельным процессом с помощью интерфейсов операционной системы, "мягкий" отладчик открывает доступ к функциям отладки среды выполнения Mono через соединительный протокол.

При запуске отлаживаемое приложение обращается к отладчику, и отладчик начинает работу. Xamarin.iOS для Visual Studio использует агент Xamarin для Mac в качестве посредника между приложением (в Visual Studio) и отладчиком.

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

Доступ к консоли

Журналы аварийного завершения и выходные данные класса консоли будут отправляться в консоль iPhone. Для получения доступа к этой консоли используйте Organizer (Организатор) в Xcode, выбрав в нем нужное устройство.

Если вы не хотите запускать Xcode, воспользуйтесь программой настройки iPhone Configuration Utility от Apple, обеспечивающей прямой доступ к консоли. Она также позволяет открывать журналы консоли с компьютера Windows, если вы выполняете отладку в полевых условиях.

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


Отладка библиотек классов Mono

Xamarin.iOS поставляется с исходным кодом для библиотек классов Mono, что позволяет вам легко изучать внутренние взаимодействия через пошаговое выполнение из отладчика.

Поскольку эта функция требует больше памяти во время отладки, по умолчанию она отключена.

Чтобы включить эту функцию, убедитесь, что только код проекта отладки; не выполняется переход к параметру кода платформы в меню отладчика Visual Studio для Mac>, > как показано ниже:

Debugging Mono's Class Libraries

После этого вы сможете запускать приложение и использовать пошаговое выполнение для любой из базовых библиотек классов Mono.