Отладка с помощью Visual Studio для Mac

Visual Studio для Mac содержит отладчики с поддержкой приложений .NET Core, .NET Framework, Unity и Xamarin.

Visual Studio для Mac использует отладчик Mono Soft Debugger, который реализован в среде выполнения Mono, что позволяет Visual Studio для Mac выполнять отладку управляемого кода на всех платформах.

Отладчик

Visual Studio для Mac использует Mono Soft Debugger для отладки управляемого кода (C# и F#) во всех приложениях Xamarin. Mono Soft Debugger отличается от обычных отладчиков тем, что является взаимодействующим и встроен в среду выполнения Mono. Созданный код и среда выполнения Mono взаимодействуют с интегрированной средой разработки (IDE) для обеспечения отладки. Среда выполнения Mono предоставляет функции отладки через протокол связи, подробнее о котором можно прочитать в документации по Mono.

Жестко заданные отладчики, такие как LLDB или GDB, управляют программой без информации об отлаживаемой программе или взаимодействия с ней, но по-прежнему могут пригодиться при отладке приложений Xamarin, когда требуется отладка машинного кода iOS или Android.

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

Использование отладчика

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

Конфигурация отладки

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

Чтобы задать точку останова в IDE, щелкните область поля редактора рядом с номером строки кода, где требуется прервать выполнение:

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

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

Список точек останова

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

Чтобы начать отладку, выберите целевой браузер, устройство или подходящий имитатор/эмулятор:

Конфигурация отладки Выбор целевого устройства

После этого разверните приложение, нажав кнопку Воспроизвести или клавиши CMD+ВВОД. При попадании в точку останова код выделяется желтым цветом:

Выделение показывает, что достигнута точка останова

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

Визуализации отладки

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

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

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

Контекстное меню точки останова

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

Изменение существующей точки останова в окне точек останова

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

Изменение условий для точки останова

Пошаговая отладка

При достижении точки останова средства отладки позволяют получить контроль над выполнением программы. Visual Studio для Mac отображает четыре кнопки, что позволяет запустить и пошагово выполнить код. В Visual Studio для Mac они будут выглядеть следующим образом:

Кнопки для пошагового выполнения кода

Ниже указаны эти четыре кнопки:

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

Выбор следующей исполняемой инструкции

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

Перетаскивание стрелки для определения следующей инструкции

Внимание!

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

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

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

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

Чтобы включить ее, перейдите в раздел Visual Studio для Mac > Параметры > Отладчик и убедитесь, что параметр Выполнение по шагам во внешнем коде выбран как показано ниже:

Параметр "Выполнение по шагам во внешнем коде"

См. также