Поделиться через


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

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

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

При работе с этим руководством вы сделаете следующее:

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

Предпосылки

Необходимо установить Visual Studio 2019 и кроссплатформенную рабочую нагрузку разработки .NET Core .

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

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

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

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

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

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

  1. В окне создания проекта введите консоль в поле поиска. Затем выберите Visual Basic из списка языков и выберите Windows из списка платформ.

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

    Снимок экрана: окно создания проекта с консолью в поле поиска, а также

    Замечание

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

  2. В окне "Настройка нового проекта" введите команду get-started-debugging в поле "Имя проекта ". Затем выберите Далее.

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

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

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

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

Imports System

Class ArrayExample
  Public Shared Sub Main()
    Dim letters As Char() = {"f"c, "r"c, "e"c, "d"c, " "c, "s"c, "m"c, "i"c, "t"c, "h"c}
    Dim name As String = ""
    Dim a As Integer() = New Integer(9) {}

    For i As Integer = 0 To letters.Length - 1
      name += letters(i)
      a(i) = i + 1
      SendMessage(name, a(i))
    Next

    Console.ReadKey()
  End Sub

  Private Shared Sub SendMessage(ByVal name As String, ByVal msg As Integer)
    Console.WriteLine("Hello, " & name & "! Count to " & msg)
  End Sub
End Class

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

  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 должна приостановить выполнение вашего кода, чтобы вы могли просмотреть значения переменных, поведение памяти или выполняется ли определенная ветвь кода.

  2. Нажмите клавишу F5 (Отладка > Начать отладку) или кнопку Начать отладку на панели инструментов отладки, приложение запустится, и отладчик дойдет до строки кода, где вы установили точку останова.

    Скриншот, показывающий окно редактора Visual Studio Code с остановленным выполнением на точке останова.

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

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

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

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

  1. Хотя выполнение кода приостановлено в цикле For в методеMain, нажмите клавишу F11 (или дважды выберите шаг отладки>), чтобы перейти к вызову SendMessage метода.

    После нажатия клавиши F11 дважды вы должны быть в этой строке кода:

    SendMessage(name, a(i))

  2. Нажмите клавишу F11 еще раз, чтобы перейти к методу SendMessage .

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

    Снимок экрана: сеанс отладки в редакторе Visual Studio Code с приостановкой выполнения после шага в метод SendMessage.

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

    Предположим, что вы закончили изучать метод SendMessage, и хотите выйти из него, но остаться в отладчике. Это можно сделать с помощью команды Step Out .

  3. Нажмите Shift + F11 (или Выход из отладки>).

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

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

  4. Нажимайте клавишу F11 несколько раз, пока не вернетесь к вызову SendMessage метода еще раз.

  5. Хотя выполнение кода приостановлено при вызове метода, один раз нажмите клавишу F10 (или выберите "Отладка > Перейти").

    Снимок экрана: сеанс отладки в редакторе Visual Studio Code с приостановкой выполнения после шага по вызову метода SendMessage.

    Обратите внимание, что отладчик не переходит в метод SendMessage. F10 перемещает отладчик без перехода к функциям или методам в коде приложения (код по-прежнему выполняется). Нажав клавишу F10 на SendMessage вызове метода (вместо F11), мы пропустили код SendMessage реализации (что, возможно, нам не интересно сейчас). Дополнительные сведения о различных способах перемещения по коду см. в разделе Навигация по коду вотладчика.

  1. Нажмите клавишу F5 , чтобы снова перейти к точке останова.

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

    Снимок экрана, показывающий кнопку "Run to Click" с выделенной подсказкой с левой стороны окна редактора кода.

  3. Нажмите кнопку "Запустить" для нажатия кнопки.

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

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

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

Чтобы перезапустить приложение, нажмите сочетание клавиш CTRL + SHIFT + F5 , оно экономит время и останавливает приложение и перезапуск отладчика. Отладчик приостанавливается на первом брейкпоинте, в который попадает выполняемый код.

Отладчик снова останавливается в точке останова, которую вы ранее задали внутри For цикла.

Инспектирование переменных с помощью подсказок

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

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

  2. Затем наведите указатель мыши на name переменную и увидите его текущее значение, пустую строку.

  3. Нажмите клавишу F5 (или Отладка>Продолжить) несколько раз, чтобы несколько раз повторить For цикл, останавливаясь снова в точке останова, и наведите курсор мыши на переменную name каждый раз, чтобы проверить ее значение.

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

    Значение переменной изменяется с каждой итерацией цикла For, отображая значения f, а затем fr, а затем freи т. д.

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

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

  1. Просмотрите окно "Автозапуск" в нижней части редактора кода.

    Если он закрыт, откройте его, пока выполнение кода приостановлено в отладчике, выбрав "Отладка>Windows>Autos".

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

  2. Затем просмотрите окно "Локальные" на вкладке рядом с окном "Автозапуск ".

  3. letters Разверните переменную, чтобы отобразить элементы, содержащиеся в ней.

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

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

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

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

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

    Окно «Наблюдение» открывается по умолчанию в нижней части редактора кода.

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

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

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

Изучите стек вызовов

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

    Если оно закрыто, откройте его, пока выполнение кода приостановлено в отладчике, выбрав Debug>Windows>Call Stack.

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

    Снимок экрана: окно стека вызовов Visual Studio с вызовом метода SendMessage, выделенным в верхней строке.

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

    Замечание

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

    Стек вызовов — это хороший способ изучить и понять поток выполнения приложения.

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

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

Изменение потока выполнения

  1. Дважды нажмите клавишу F11, чтобы запустить Console.WriteLine метод.

  2. При остановке в методе SendMessage с помощью отладчика используйте мышь для перемещения желтой стрелки или индикатора выполнения (в левом поле) и перетащите индикатор на одну строку вверх к инструкции Console.WriteLine.

  3. Нажмите клавишу F11.

    Отладчик повторно запускает Console.WriteLine метод (это действие отображается в выходных данных окна консоли).

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

    Предупреждение

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

  4. Нажмите клавишу F5 , чтобы продолжить запуск приложения.

    Поздравляем с завершением работы с этим руководством!

Дальнейшие шаги

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