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


Проверка переменных в отладчике Visual Studio

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

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

  • Окна проверки переменных (авто, локальные и контрольные окна)
  • Советы по данным в редакторе кода
  • Встроенные возвращаемые значения
  • Визуализаторы для больших строк или сложных объектов .NET

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

Заметка

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

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

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

  • Чтобы открыть окно автозапуска, выберите Отладка>Windows>Автозапускили нажмите клавиши CTRL+ALT+V>A.

    Окно автозапуска доступно для кода C#, Visual Basic, C++и Python, но не для JavaScript или F#.

  • Чтобы открыть окно Локальные при отладке, выберите Отладка>Windows>Локальныеили нажмите клавиши Alt+4.

Массивы и объекты отображаются в окнах Автомобили и Локальные в виде элементов управления деревом. Щелкните стрелку слева от имени переменной, чтобы развернуть представление, чтобы отобразить поля и свойства. Ниже приведен пример объекта System.IO.FileStream в окне Locals:

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

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

Красное значение в окне Locals или Autos означает, что значение изменилось с момента последней оценки. Изменение может быть из предыдущего сеанса отладки или из-за изменения значения в окне.

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

Изменение значений переменных в окне "Авто" или "Локальные"

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

Можно ввести выражение для значения, например a + b. Отладчик принимает наиболее допустимые выражения языка.

В собственном коде C++ может потребоваться указать контекст имени переменной. Для получения дополнительной информации см. оператора контекста (C++).

Осторожность

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

  • Оценка некоторых выражений может изменить значение переменной или в противном случае повлиять на состояние программы. Например, вычисление var1 = ++var2 изменяет значение как var1, так и var2. Эти выражения, по сообщениям, имеют побочные эффекты. Побочные эффекты могут вызвать непредвиденные результаты, если вы не знаете их.

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

Поиск в окне "Автомобили" или "Локалы"

Ключевые слова можно искать в столбцах "Имя", "Значение" и "Тип" окна "Авто" или "Локальные" с помощью панели поиска, расположенной над каждым окном. Нажмите клавишу ВВОД или выберите одну из стрелок для выполнения поиска. Чтобы отменить текущий поиск, щелкните значок "x" в строке поиска.

Используйте клавиши со стрелками влево и вправо (Shift+F3 и F3 соответственно) для навигации между найденными совпадениями.

снимок экрана поиска в окне

снимок экрана поиска в окне

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

Закрепление свойств в окне "Автосвойства" или "Локальные переменные"

Заметка

Эта функция поддерживается для .NET Core 3.0 или более поздней версии.

Вы можете быстро просматривать свойства объектов в окнах "Автоматически" и "Локальные" с помощью инструмента закрепляемых свойств. Чтобы использовать это средство, наведите указатель мыши на свойство и выберите значок закрепления, который появляется, или щелкните правой кнопкой мыши и выберите пункт Закрепить как избранное в результирующем контекстном меню. Это свойство перемещается в верхнюю часть списка свойств объекта, а имя и значение свойства отображаются в столбце Value. Чтобы открепить свойство, щелкните значок закрепления ещё раз или выберите пункт Открепить участника как избранное в контекстном меню.

Снимок экрана свойств закреплений в окне

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

снимок экрана: избранное свойства фильтра.

Снимок экрана имён свойств Toggle.

Изменение контекста для окна "Авто" или "Локальные"

Панель инструментов "Расположение отладки" можно использовать для выбора требуемой функции, потока или процесса, что изменяет контекст для окна 'Авто' и окна 'Локальные'.

Чтобы включить панель инструментов расположения отладки, щелкните пустую часть области панели инструментов и выберите расположение отладки в раскрывающемся списке или выберите Просмотреть>панели инструментов>расположение отладки.

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

Screenshot of Debug Location toolbar.снимок экрана панели инструментов "Расположение отладки".Debug Location toolbar панели инструментов "Расположение отладки"

снимок экрана панели инструментов

Различия языка в окне "Автозапуск" (C#, C++, Visual Basic, Python)

Различные языки кода отображают различные переменные в окне Автозапуск.

  • В C# и Visual Basic окно автоматически отображает любую переменную, используемую в текущей или предыдущей строке. Например, в коде C# или Visual Basic объявите следующие четыре переменных:

         public static void Main()
         {
            int a, b, c, d;
            a = 1;
            b = 2;
            c = 3;
            d = 4;
         }
    

    Установите точку останова в строке c = 3;и запустите отладчик. Окно Авто будет отображаться при приостановке выполнения:

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

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

    Значение c равно 0, так как строка c = 3 еще не выполнена.

  • В C++ окно "Авто" отображает переменные, используемые в как минимум трех строках перед текущей строкой, в которой приостановлено выполнение. Например, в коде C++ объявите шесть переменных:

         void main() {
             int a, b, c, d, e, f;
             a = 1;
             b = 2;
             c = 3;
             d = 4;
             e = 5;
             f = 6;
         }
    

    Задайте точку останова в строке e = 5; и запустите отладчик. При остановке выполнения окно Авто отобразит:

    Скриншот окна 'Автос' с выделенной строкой, отображающей int c со значением 3.

    Скриншот окна 'Автос' с выделенной строкой, отображающей int c со значением 3.

    Переменная e не инициализирована, так как строка e = 5 еще не была выполнена.

Просмотр подсказок по данным

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

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

просмотреть подсказку по данным

просмотреть подсказку по данным

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

Установите наблюдение за переменными

Можно использовать окно наблюдения для указания переменной (или выражения), за которой вы хотите следить. Для получения подробной информации см. "Настройка элементов наблюдения в окнах 'Watch' и 'QuickWatch'".

При отладке, нажав правой кнопкой на объект, выберите Добавить наблюдение.

окно наблюдения

окно наблюдения

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

Просмотр возвращаемых значений вызовов методов

В коде .NET и C++ можно проверить возвращаемые значения в окне Autos при выполнении или выходе из вызова метода, что может быть полезно, если возвращаемое значение не хранится в локальной переменной. Метод может использоваться в качестве параметра или в качестве возвращаемого значения другого метода.

Начиная с Visual Studio 2022 версии 17.12 Preview 3, можно также просматривать встроенные значения вызовов методов, а не только в окне автозапуска.

снимок экрана с возвращаемыми значениями вызовов методов.

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

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

Просмотр возвращаемых значений в окнах Autos

В следующем примере этот код C# добавляет возвращаемые значения двух функций:

static void Main(string[] args)
{
    int a, b, c, d;
    a = 1;
    b = 2;
    c = 3;
    d = 4;
    int x = sumVars(a, b) + subtractVars(c, d);
}

private static int sumVars(int i, int j)
{
    return i + j;
}

private static int subtractVars(int i, int j)
{
    return j - i;
}

Чтобы просмотреть возвращаемые значения вызовов метода sumVars() и subtractVars() в окне автозапуска:

  1. Задайте точку останова в строке int x = sumVars(a, b) + subtractVars(c, d);.

  2. Запустите отладку, и когда выполнение будет приостановлено в точке останова, выберите Шаг с обходом или нажмите клавишу F10. В окне Автоматические вы должны увидеть следующие возвращаемые значения:

    снимок экрана значения возврата Autos C#.

Проверка переменных в визуализаторе

При отладке в Visual Studio можно просматривать большие строки или сложные объекты со встроенными визуализаторами, которые упрощают проверку данных. Рассмотрим пример.

  • Визуализатор строк отображает строки текста, XML, HTML и JSON, которые слишком длинны для окна подсказки данных или отладчика. Кроме того, это поможет определить неправильно сформированные строки. Для получения дополнительной информации смотрите просмотр строк в строковом визуализаторе.
  • Визуализаторы DataSet и IEnumerable отображают объекты коллекции .NET в табличном визуализаторе. Дополнительные сведения см. в разделе Табличные визуализаторы в объектах Visual Studio).

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

Заметка

Если необходимо проверить элементы пользовательского интерфейса XAML или WPF в визуализаторе, см. или проверьте свойства XAML при отладке или Как использовать визуализатор дерева WPF.

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

Откройте визуализатор строк

Откройте визуализатор строк

Получение помощи по искусственному интеллекту

Если у вас есть Copilot, вы можете получить помощь искусственного интеллекта при просмотре переменных в окнах "Авто" или "Локальные", или в подсказках по данным. Щелкните правой кнопкой мыши на переменной и используйте кнопку Ask Copilot. Снимок экрана кнопки Ask Copilot. Кнопка. В этом сценарии Copilot уже знает контекст вашего вопроса, поэтому вам не нужно предоставлять контекст в чате. Дополнительные сведения см. в разделе Отладка с помощью Copilot.