Бөлісу құралы:


Руководство по отладке кода C# с помощью Visual Studio

В этой статье представлены функции отладчика Visual Studio в пошаговом руководстве. Если вы хотите получить общее представление о функциях отладчика, см. раздел Первый взгляд на отладчик. При отладке вашего приложенияэто обычно означает, что вы запускаете приложение с подключённым отладчиком. При выполнении этой задачи отладчик предоставляет множество способов узнать, что делает ваш код во время выполнения. Вы можете поэтапно выполнить отладку кода и просмотреть значения, хранящиеся в переменных, установить наблюдение за переменными, чтобы увидеть, когда изменяются значения. Можно изучить путь выполнения кода, узнать, выполняется ли ветвь кода, и так далее. Если это упражнение — ваш первый опыт отладки кода, вам может быть полезно прочитать «Отладка для абсолютных начинающих» перед тем, как приступить к чтению этой статьи.

Хотя демонстрационное приложение написано на C#, большинство функций применимо к C++, Visual Basic, F#, Python, JavaScript и другим языкам, поддерживаемым Visual Studio (F# не поддерживает функцию Edit-and-continue. F# и JavaScript не поддерживают окно Autos). Снимки экрана находятся на C#.

В этом руководстве описано следующее:

  • Запустите отладчик и нажмите точки останова.
  • Изучите команды для пошагового выполнения кода в отладчике
  • Инспектирование переменных в подсказках по данным и окнах отладчика
  • Проверка стека вызовов

Необходимые условия

Необходимо установить Visual Studio 2022 и пакет компонентов для разработки настольных приложений .NET.

Если вы еще не установили Visual Studio, перейдите на страницу Visual Studio загрузки, чтобы установить его бесплатно.

Если у вас уже есть Visual Studio, но рабочая нагрузка для разработки настольных приложений .NET не установлена, перейдите к Инструменты>Get Tools and Features..., что запустит Visual Studio Installer. В установщике Visual Studio выберите рабочую среду для разработки классических приложений .NET , а затем выберите Изменить.

Создание проекта

Сначала вы создадите проект консольного приложения .NET Core. Тип проекта включает в себя все необходимые шаблонные файлы, прежде чем вы что-либо добавите!

  1. Откройте Visual Studio. Если окно запуска не открыто, выберите Файл>Окно запуска.

  2. В окне запуска выберите Создать проект.

  1. В окне Создание нового проекта введите console в поле поиска. Затем выберите C# в списке языков, а затем выберите Windows из списка платформ.

    После применения фильтров языка и платформы выберите шаблон консольного приложения, а затем выберите Далее.

    снимок экрана шаблона консольного приложения в окне

    Заметка

    Если шаблон консольного приложения не отображается, вы можете установить его из окна создания нового проекта. В сообщении "Не можете найти то, что ищете?" выберите ссылку "Установить больше инструментов и функций". Затем в установщике Visual Studio выберите рабочую нагрузку разработки десктопных приложений .NET.

  2. В окне Настройка нового проекта введите GetStartedDebugging в поле имени проекта . Затем выберите Далее.

  3. В окне Дополнительные сведения убедитесь, что .NET 8.0 выбран в раскрывающемся меню Framework, а затем выберите Создать.

Visual Studio открывает новый проект.

Создание приложения

В Program.csзамените весь код по умолчанию следующим кодом:

using System;

class ArrayExample
{
   static void Main()
   {
      char[] letters = { 'f', 'r', 'e', 'd', ' ', 's', 'm', 'i', 't', 'h'};
      string name = "";
      int[] a = new int[10];
      for (int i = 0; i < letters.Length; i++)
      {
         name += letters[i];
         a[i] = i + 1;
         SendMessage(name, a[i]);
      }
      Console.ReadKey();
   }

   static void SendMessage(string name, int msg)
   {
      Console.WriteLine("Hello, " + name + "! Count to " + msg);
   }
}

Запустите отладчик!

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

  1. Чтобы запустить отладчик, выберите F5или нажмите кнопку "Цель отладки" на стандартной панели инструментов или нажмите кнопку "Начать отладку" на панели инструментов отладки или выберите "Отладка>Начать отладку" в строке меню.

    Снимок экрана кнопки

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

    Hello, f! Count to 1
    Hello, fr! Count to 2
    Hello, fre! Count to 3
    Hello, fred! Count to 4
    Hello, fred ! Count to 5
    Hello, fred s! Count to 6
    Hello, fred sm! Count to 7
    Hello, fred smi! Count to 8
    Hello, fred smit! Count to 9
    Hello, fred smith! Count to 10
    
  2. Чтобы остановить отладчик, выберите Shift+F5или нажмите кнопку Остановить отладку на панели инструментов отладки, или выберите Отладка>Остановить отладку в строке меню.

    снимок экрана: кнопка

  3. В окне консоли выберите любой ключ, чтобы закрыть окно консоли.

Установка точки останова и запуск отладчика

  1. В цикле for функции Main установите точку останова, щелкнув левое поле в следующей строке кода:

    name += letters[i];

    Появится красный круг, в котором устанавливается точка останова.

    снимок экрана точки останова в Visual Studio 2022.

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

  2. Чтобы начать отладку, выберите F5или нажмите кнопку "Цель отладки" на стандартной панели инструментов или нажмите кнопку "Запуск отладки" на панели инструментов "Отладка" или выберите Отладка>Запуск отладки в строке меню. Приложение запускается, а отладчик останавливается на строке кода, где устанавливается точка останова.

    Снимок экрана показывает точку останова в редакторе кода Visual Studio 2022, где выполнение кода приостановлено на точке останова.

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

    Если приложение не запущено, F5 запускает отладчик, который запускает приложение, пока не достигнет первой точки останова. Если приложение приостановлено в точке останова, F5 продолжит работу приложения, пока не достигнет следующей точки останова.

    Точки останова — это полезная функция, когда вы знаете строку или раздел кода, которые необходимо подробно изучить. Дополнительные сведения о различных типах точек останова, таких как условные точки останова, см. в разделе Использование точек останова.

  1. Хотя выполнение кода приостановлено в инструкции name += letters[i], наведите указатель мыши на переменную letters, чтобы увидеть подсказку данных с размером массива и типом элемента, char[10].

    Заметка

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

  2. Разверните переменную letters, чтобы просмотреть все его элементы массива и их значения.

    Снимок экрана: подсказка данных в Visual Studio 2022, показывающая значения элементов массива

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

  4. Чтобы перейти в отладчике к следующей инструкции, выберите F10или нажмите кнопку "Шаг с обходом" на панели инструментов отладки, или выберите Отладка>Шаг с обходом в строке меню. Выберите F10 ещё дважды, чтобы пройти вызов метода SendMessage.

    F10 продвигает отладку без входа в функцию или метод, даже если их код все равно выполняется. Таким образом, мы пропустили отладку кода в методе SendMessage, так как на данный момент это нас не интересует.

  5. Чтобы выполнить итерацию по циклу for несколько раз, выберите F10 многократно. Во время каждой итерации цикла останавливайтесь на точке останова, а затем наведите указатель мыши на переменную name, чтобы проверить её значение во всплывающей подсказке.

    снимок экрана подсказки отладчика по данным в Visual Studio 2022, показывающей строковое значение переменной 'name'.

    Значение переменной изменяется с каждой итерацией цикла for, отображая значения f, а затем fr, а затем freи т. д. Чтобы ускорить переход отладчика через цикл, выберите F5. Это позволит перейти к контрольной точке вместо следующей инструкции.

  6. Пока выполнение кода приостановлено в цикле for метода Main, выберите F11или нажмите кнопку Шаг в (Step Into) на панели инструментов отладки, или выберите из строки меню >Шаг в (Step Into), пока не перейдете к вызову метода SendMessage.

    Отладчик должен быть приостановлен в этой строке кода:

    SendMessage(name, a[i]);

  7. Чтобы перейти к методу SendMessage, снова выберите F11.

    Желтый указатель перемещается в метод SendMessage.

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

    F11 помогает более подробно изучить поток выполнения кода. Чтобы перейти к методу из вызова метода, выберите F11. По умолчанию отладчик пропускает вход в непользовательские методы. Дополнительные сведения об отладке неиспользуемого кода см. в статье Just My Code.

    Завершив отладку метода SendMessage, вы будете готовы вернуться к циклу for метода main.

  8. Чтобы выйти из метода SendMessage, выберите Shift+F11или нажмите кнопку Шаг выхода на панели инструментов отладки, или выберите Отладка>Шаг выхода в строке меню.

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

    Вы увидите желтый указатель обратно в цикл for метода Main, приостановленный при вызове метода SendMessage. Дополнительные сведения о различных способах перемещения по коду см. в разделе Навигация по коду в отладчике.

  1. Выберите F5, чтобы перейти к точке останова еще раз.

  2. В редакторе кода наведите указатель мыши на вызов метода Console.WriteLine в методе SendMessage, пока не появится кнопка "Run to Click". Подсказка на кнопке показывает "Запустить выполнение до этого места".

    Снимок экрана, показывающий кнопку

  3. Нажмите кнопку Запустить, чтобы нажать кнопку. Кроме того, с курсором в инструкции Console.WriteLine выберите CTRL+F10. Или щелкните правой кнопкой мыши вызов метода Console.WriteLine и выберите Выполнить до курсора в контекстном меню.

    Отладчик переходит к вызову метода Console.WriteLine.

    Использование кнопки "Запустить" для нажатия аналогично настройке временной точки останова и удобно быстро перемещаться в видимой области кода приложения в открытом файле.

Быстро перезапустите приложение

Чтобы повторно запустить приложение с самого начала в отладчике, выберите CTRL+SHIFT+F5или нажмите кнопку Перезапуск на панели инструментов отладки или выберите Отладка>перезапустить в строке меню.

снимок экрана: кнопка

Перезапуск останавливает отладчик, а затем перезапускает его за один шаг. Когда отладчик перезапускается, он доходит до первой точки останова, которая является точкой останова, ранее установленной внутри цикла for, а затем приостанавливается.

Проверка переменных с помощью окон "Авто" и "Локальные"

При отладке окна Автос и Локалы отображают значения переменных. Окна доступны только во время сеанса отладки. В окне Автосодержимое отображаются переменные, используемые на текущей строке, на которой находится отладчик, и на предыдущей строке. В окне "Locals" отображаются переменные, определенные в локальной области, которая, как правило, соответствует текущей функции или методу.

  1. Пока отладчик приостановлен, просмотрите окно 'Автоматически' в нижней части редактора кода.

    Если окно Autos закрыто, выберите Ctrl+D, Aили выберите Debug>Windows>Autos в строке меню.

  2. Пока отладчик остается приостановленным, просмотрите окно Локальные на вкладке рядом с окном Авто.

    Если окно локальных закрыто, выберите CTRL+D, Lили выберите Отладка>Windows>Локальные.

  3. В окне Локальные разверните переменную letters, чтобы просмотреть элементы массива и их значения.

    снимок экрана окна

Дополнительные сведения об окнах Autos и Locals см. в разделе "Проверка переменных в окнах Autos и Locals".

Установка часов

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

  1. Пока отладчик приостановлен, щелкните правой кнопкой мыши переменную name и выберите Добавить в наблюдение.

    Окно "Просмотр" открывается в нижней части редактора кода по умолчанию.

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

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

Дополнительные сведения об окне Просмотр можно найти в разделе Просмотр переменных с помощью оконПросмотр.

Проверка стека вызовов

стек вызовов поможет вам понять поток выполнения приложения, показывая порядок вызова методов и функций.

  1. Пока отладчик приостановлен в цикле for, просмотрите окно стека вызовов , которое по умолчанию открывается в правой нижней панели редактора кода.

    Если окно стека вызовов закрыто, выберите CTRL+D, Cили выберите Отладка>Windows>стек вызовов в строке меню.

    В окне стека вызовов вы видите желтый указатель, указывающий на текущий метод Main.

  2. Выберите F11 несколько раз, пока отладчик не приостановит выполнение в методе SendMessage.

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

    снимок экрана окна стека вызовов в Visual Studio 2022.

    Заметка

    Окно стека вызовов похоже на окно отладки в некоторых средах разработки, таких как Eclipse.

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

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

Дополнительные сведения о стеке вызовов см. в разделе "Как изучить стек вызовов".

Дальнейшие действия

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