Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Когда вы пытаетесь отладить проблему, вы часто пытаетесь выяснить, хранят ли переменные значения, которые вы ожидаете от них, в определенном состоянии приложения. Некоторые из наиболее полезных функций отладчика — это те, которые позволяют проверять переменные.
В этой статье показано, как проверить переменные и просмотреть возвращаемые значения с помощью отладчика в Visual Studio. Отладчик предоставляет несколько удобных способов выполнения этих задач, включая следующие:
- В редакторе кода можно просматривать подсказки по данным и возвращаемые значения встроенно.
- В окнах отладчика (автоматические, локальные и контрольные окна) можно просматривать значения переменных.
- В визуализаторах можно просматривать большие строки или сложные объекты .NET.
Эти функции доступны только при отладке. Сведения о запуске сеанса отладки см. в статье Запуск отладки и ввод режима останова.
Заметка
Если это первый раз, когда вы пытались выполнить отладку кода, вам, возможно, стоит прочитать Отладка для абсолютных новичков и Методы и инструменты отладки перед тем как приступить к этой статье.
Просмотр переменных в редакторе кода
Часто при отладке требуется быстрый способ проверить значения свойств на объектах в редакторе кода, а советы по данным — это хороший способ.
При приостановке в отладчике наведите указатель мыши на объект и увидите его значение или значение свойства по умолчанию.
Если переменная имеет свойства, можно развернуть объект, чтобы просмотреть все его свойства.
Подробные сведения об использовании подсказок см. в разделе Просмотр значений данных в подсказках.
В редакторе кода можно просматривать встроенные значения, возвращаемые вызовами методов.
В коде .NET и C++ можно проверить возвращаемые значения при переходе или выходе из вызова метода, что может быть полезно, если возвращаемое значение не хранится в локальной переменной. Метод может использоваться в качестве параметра или в качестве возвращаемого значения другого метода.
Начиная с версии 17.12 Visual Studio 2022, вы можете просматривать возвращаемые значения вызовов методов встроенно, а не только в окне Auto.
С включенным Copilot вы также можете получить целевую помощь, связанную с встроенным возвращаемым значением, с помощью кнопки "Ask Copilot", которая отображается в подсказке данных для возвращаемого значения.
Установите наблюдение за переменными
Можно использовать окно наблюдения для указания переменной (или выражения), за которой вы хотите следить.
При отладке щелкните правой кнопкой мыши на объекте в редакторе кода и выберите Добавить наблюдение. Откроется окно "Наблюдения".
окно наблюдения
окно наблюдения
В этом примере у вас установлено наблюдение за объектом, и вы можете видеть, как его значение изменяется в процессе отладки. В отличие от других окон переменных, окна Просмотр всегда отображают переменные, которые вы отслеживаете (они становятся серыми, когда выходят из области видимости).
Для получения подробной информации см. "Настройка элементов наблюдения в окнах 'Watch' и 'QuickWatch'".
Получение помощи по искусственному интеллекту
Если у вас есть Copilot, вы можете получить помощь по искусственному интеллекту во время просмотра переменных в редакторе кода или в окнах "Авто" или "Локальные". Во время отладки щелкните переменную правой кнопкой мыши и нажмите В этом сценарии Copilot уже знает контекст вашего вопроса, поэтому вам не нужно предоставлять контекст в чате. Дополнительные сведения см. в разделе Отладка с помощью Copilot.
Проверка переменных в окнах отладчика (авто и локальные параметры)
При отладке окна Автос и Локалы отображают значения переменных. Окна доступны только во время сеанса отладки. В окне 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. Чтобы открепить свойство, щелкните значок закрепления ещё раз или выберите пункт Открепить участника как избранное в контекстном меню.
Вы также можете переключать имена свойств и отфильтровать не закрепленные свойства при просмотре списка свойств объекта в окнах "Авто" или "Локальные". Вы можете получить доступ к каждому параметру, выбрав кнопки на панели инструментов над окнами "Авто" или "Локальные".
Изменение контекста для окна "Авто" или "Локальные"
Панель инструментов "Расположение отладки" можно использовать для выбора требуемой функции, потока или процесса, что изменяет контекст для окна 'Авто' и окна 'Локальные'.
Чтобы включить панель инструментов расположения отладки, щелкните пустую часть области панели инструментов и выберите расположение отладки в раскрывающемся списке или выберите Просмотреть>панели инструментов>расположение отладки.
Задайте точку останова и запустите отладку. Когда точка останова достигается, выполнение приостанавливается, и на панели инструментов "Расположение отладки" отображается текущее местоположение.
снимок экрана панели инструментов 'Расположение отладки'
Снимок экрана панели инструментов "Расположение отладки". Панель инструментов "Расположение отладки"
Различия языка в окне "Автозапуск" (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;
и запустите отладчик. При остановке выполнения окно Авто отобразит:Переменная
e
не инициализирована, так как строкаe = 5
еще не была выполнена.
Просмотр возвращаемых значений в окне "Авто"
В следующем примере этот код 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()
в окне автозапуска:
Задайте точку останова в строке
int x = sumVars(a, b) + subtractVars(c, d);
.Запустите отладку, и когда выполнение будет приостановлено в точке останова, выберите Шаг с обходом или нажмите клавишу F10. В окне Автоматические вы должны увидеть следующие возвращаемые значения:
Открытие визуализатора для проверки переменных
При отладке в Visual Studio можно просматривать большие строки или сложные объекты с встроенными визуализаторами, которые упрощают проверку данных. Рассмотрим пример.
- Визуализатор строк отображает строки текста, XML, HTML и JSON, которые слишком длинны для окна подсказки данных или отладчика. Кроме того, это поможет определить неправильно сформированные строки. Для получения дополнительной информации смотрите просмотр строк в строковом визуализаторе.
- Визуализаторы DataSet и IEnumerable отображают объекты коллекции .NET в табличном визуализаторе. Дополнительные сведения см. в разделе Табличные визуализаторы в объектах Visual Studio).
Визуализаторы отображаются в окнах автозаверений , советах по данным и других окнах отладчика.
Заметка
Если необходимо проверить элементы пользовательского интерфейса XAML или WPF в визуализаторе, см. или проверьте свойства XAML при отладке или Как использовать визуализатор дерева WPF.
Чтобы открыть визуализатор, необходимо находиться в режиме паузы во время отладки. Наведите указатель мыши на переменную, которая имеет поддерживаемое значение визуализатора, и выберите значок лупы .