Проверка переменных в окнах "Авто" и "Локальные"
При отладке автоматические и локальные окна отображают значения переменных. Окна доступны только во время сеанса отладки. В окне Autos отображаются переменные, используемые вокруг текущей инструкции, где отладчик приостановлен. В окне Локальные переменные отображаются переменные, определенные в локальной области, в которой в большинстве случаев находятся текущая функция или метод.
Заметка
Если это первый раз, когда вы пытались выполнить отладку кода, вам, возможно, стоит прочитать Отладка для абсолютных новичков и Методы и инструменты отладки перед тем как приступить к этой статье.
Окно автозапуска доступно для кода C#, Visual Basic, C++и Python, но не для JavaScript или F#.
Чтобы открыть окно автозапуска, выберите Отладка>Windows>Автозапускили нажмите клавиши CTRL+ALT+V>A.
Чтобы открыть окно Локальные при отладке, выберите Отладка>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. Чтобы открепить свойство, щелкните значок закрепления ещё раз или выберите пункт Открепить участника как избранное в контекстном меню.
Вы также можете переключать имена свойств и отфильтровать не закрепленные свойства при просмотре списка свойств объекта в окнах "Авто" или "Локальные". Вы можете получить доступ к каждому параметру, выбрав кнопки на панели инструментов над окнами "Авто" или "Локальные".
Изменение контекста для окна "Авто" или "Локальные"
Панель инструментов "Расположение отладки" можно использовать для выбора требуемой функции, потока или процесса, что изменяет контекст для окна 'Авто' и окна 'Локальные'.
Чтобы включить панель инструментов расположения отладки, щелкните пустую часть области панели инструментов и выберите расположение отладки в раскрывающемся списке или выберите Просмотреть>панели инструментов>расположение отладки.
Задайте точку останова и запустите отладку. Когда точка останова достигается, выполнение приостанавливается, и на панели инструментов "Расположение отладки" отображается текущее местоположение.
панели инструментов "Расположение отладки"
Получение помощи по искусственному интеллекту
Если у вас есть Copilot, вы можете получить помощь искусственного интеллекта при просмотре переменных в окнах "Авто" или "Локальные", или в подсказках по данным. Щелкните правой кнопкой мыши на переменной и используйте кнопку Ask Copilot. В этом сценарии Copilot уже знает контекст вашего вопроса, поэтому вам не нужно предоставлять контекст в чате. Дополнительные сведения см. в разделе Отладка с помощью Copilot.
Переменные в окне автозапуска (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
еще не была выполнена.
Просмотр возвращаемых значений вызовов методов
В коде .NET и C++ можно проверить возвращаемые значения в окне автозапуска при переходе или выходе из вызова метода. Просмотр возвращаемых значений вызова метода может оказаться полезным, если они не хранятся в локальных переменных. Метод может использоваться в качестве параметра или в качестве возвращаемого значения другого метода.
Заметка
Начиная с Visual Studio 2022 версии 17.12 (превью 3), можно также просмотреть возвращаемые значения непосредственно в коде, а не только в окне "Автодополнение".
Например, следующий код 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. В окне Автоматические вы должны увидеть следующие возвращаемые значения: