Проверка переменных в окнах "Видимые" и "Локальные" в Visual Studio
В окнах Видимые и Локальные отображаются значения переменных во время отладки. Окна доступны только во время сеанса отладки. В окне Видимые отображаются переменные, используемые вокруг текущей точки останова. В окне Локальные отображаются переменные, определенные в локальной области, которая обычно является текущей функцией или методом.
Если вы не знакомы с процессом отладки кода, перед выполнением задач в этой статье рекомендуется прочесть документ об отладке для начинающих и статью Методы и инструменты отладки.
Окно Видимые доступно для кода на C#, Visual Basic, C++ и Python, но не для кода на JavaScript или F#.
Чтобы открыть окно Видимые, во время отладки последовательно выберите пункты Отладка > Окна > Видимые или нажмите сочетание клавиш CTRL+ALT+V > A.
Чтобы открыть окно Локальные, во время отладки последовательно выберите пункты Отладка > Окна > Локальные или нажмите сочетание клавиш ALT+4.
Этот раздел относится к Visual Studio в Windows. Информацию о Visual Studio для Mac см. в статье Визуализации данных в Visual Studio для Mac.
Использование окон "Видимые" и "Локальные"
Массивы и объекты отображаются в окнах Видимые и Локальные как элементы управления в виде дерева. Щелкните стрелку слева от имени переменной, чтобы развернуть представление и увидеть поля и свойства. Далее приведен пример объекта System.IO.FileStream в окне Локальные.

Значение красного цвета в окне Локальные или Видимые означает, что значение изменилось с момента последнего вычисления. Изменение могло произойти во время предыдущего сеанса отладки или быть выполнено в окне.
По умолчанию в окнах отладчика используется десятичный числовой формат. Чтобы изменить его на шестнадцатеричный, щелкните правой кнопкой мыши в окне Локальные или Видимые и выберите пункт Шестнадцатеричный вывод. Это изменение распространяется на все окна отладчика.
Изменение значений переменных в окне "Видимые" и "Локальные"
Чтобы изменить значения большинства переменных в окнах Видимые или Локальные, дважды щелкните текущее значение и введите новое.
В качестве значения можно ввести выражение, например a + b . Отладчик принимает большинство допустимых выражений языка.
При работе с машинным кодом C++ может потребоваться определить контекст имени переменной. Дополнительные сведения см. в разделе Оператор контекста (C++).
Перед изменением значений и выражений нужно оценить его возможные последствия. Возможны следующие проблемы.
Вычисление некоторых выражений может привести к изменению значения некоторой переменной или иным образом повлиять на состояние программы. Например, вычисление var1 = ++var2 изменяет значения var1 и var2 . Такие выражения называют выражениями с побочными эффектами. Если вы не осведомлены о побочных эффектах, они могут привести к непредвиденным результатам.
Изменение значений с плавающей запятой может привести к незначительной погрешности, связанной с преобразованием дробных компонентов из десятичной формы в двоичную. Даже внешне кажущееся безвредным редактирование может привести к изменениям некоторых младших разрядов переменной с плавающей запятой.
Поиск в окне "Видимые" или "Локальные"
Используя панель поиска над каждым окном, можно искать ключевые слова в столбцах "Имя", "Значение" и "Тип" в окнах Видимые или Локальные. Нажмите клавишу ВВОД или щелкните одну из стрелок, чтобы выполнить поиск. Чтобы отменить текущий поиск, нажмите значок "x" на панели поиска.
Для перехода между найденными совпадениями используйте стрелки влево и вправо (SHIFT + F3 и F3 соответственно).

Чтобы сделать поиск более или менее детальным, воспользуйтесь раскрывающимся списком Поиск на уровень глубже в верхней части окна Видимые или Локальные, чтобы выбрать число уровней детализации поиска во вложенных объектах.
Закрепление свойств в окне "Видимые" или "Локальные"
Эта возможность поддерживается для .NET Core 3.0 или более поздних версий.
С помощью средства Закрепляемые свойства можно быстро проверить объекты на основе их свойств в окнах "Видимые" и "Локальные". Чтобы воспользоваться этим средством, наведите указатель мыши на свойство и выберите значок булавки либо щелкните правой кнопкой мыши и в контекстном меню выберите пункт Закрепить элемент в избранном. Свойство будет размещено в верхней части списка свойств объекта, а имя и значение свойства будут отображаться в столбце Значение. Чтобы открепить свойство, щелкните значок булавки еще раз или в контекстном меню выберите пункт Открепить элемент в избранном.
При просмотре списка свойств объекта в окнах "Видимые" или "Локальные" можно также включать и отключать отображение имен свойств и отфильтровывать незакрепленные свойства. Доступ к каждому параметру можно получить, нажимая кнопки на панели инструментов над окнами "Видимые" или "Локальные".

Изменение контекста для окна "Видимые" или "Локальные"
С помощью панели инструментов Место отладки можно выбирать нужную функцию, поток или процесс, что приводит к изменению контекста для окон Видимые и Локальные.
Чтобы включить панель инструментов Место отладки, щелкните в пустой части области панели инструментов и в раскрывающемся списке выберите Место отладки или последовательно выберите пункты Вид > Панели инструментов > Место отладки.
Задайте точку останова и начните отладку. При достижении точки останова выполнение приостанавливается и вы можете увидеть расположение на панели инструментов Место отладки.

Переменные в окне "Видимые" (C#, C++, Visual Basic, Python)
При работе с разными языками в окне Видимые отображаются разные переменные.
При использовании C# или Visual Basic в окне Видимые отображаются все переменные, используемые в текущей или предыдущей строках. Например, в коде C# или Visual Basic объявите следующие четыре переменные.
Задайте точку останова в строке c = 3; и запустите отладчик. Когда выполнение приостановится, в окне Видимые будет отображено следующее.

Значение c равно 0, так как строка c = 3 еще не была выполнена.
При использовании C++ в окне Видимые отображаются переменные, которые используются по крайней мере в трех строках до текущей строки (строки, в которой выполнение приостановлено). Например, в коде C++ объявите шесть переменных.
Задайте точку останова в строке e = 5; и запустите отладчик. Когда выполнение остановится, в окне Видимые будет отображено следующее.

Переменная e не инициализирована, так как код в строке e = 5 еще не выполнен.
View return values of method calls
В коде .NET и C++ можно просматривать возвращаемые значения в окне Видимые при выполнении шага с обходом вызова метода или выходом из него. Просмотр возвращаемых значений вызова метода может быть полезен, если они не хранятся в локальных переменных. Метод можно использовать в качестве параметра или возвращаемого значения другого метода.
Например, следующий код C# добавляет возвращаемые значения двух функций.
Чтобы просмотреть возвращаемые значения вызовов методов sumVars() и subtractVars() в окне "Видимые", выполните следующие действия.
Установите точку останова на строке int x = sumVars(a, b) + subtractVars(c, d); .
Начните отладку и, когда выполнение приостановится в точке останова, выберите Шаг с обходом или нажмите клавишу F10. Вы увидите следующие возвращаемые значения в окне Видимые.
Как посмотреть значения переменных в visual studio в отладке
Знакомство с отладчиком Visual Studio
В этом разделе представлены средства отладчика, предоставляемые Visual Studio. В контексте Visual Studio отладка приложения обычно означает запуск приложения с подключенным отладчиком (то есть в режиме отладчика). При этом в отладчике доступно множество способов наблюдения за выполнением кода. Вы можете пошагово перемещаться по коду и просматривать значения, хранящиеся в переменных, задавать контрольные значения для переменных, чтобы отслеживать изменение значений, изучать путь выполнения кода и т. д. Если вы не знакомы с процессом отладки, перед выполнением задач в этом разделе рекомендуется прочесть документ об отладке для начинающих.
Описанные здесь функции применяются к C#, C++, Visual Basic, JavaScript и другим языкам, поддерживаемым Visual Studio (если не указано иное).
Установка точки останова и запуск отладчика
Точки останова полезны, если вам известны строка или раздел кода, которые вы хотите подробно изучить в среде выполнения. Дополнительные сведения о различных типах точек останова, которые можно задать, например об условных точках останова и точках останова в функциях, см. в разделе Использование точек останова.
Для отладки нужно запустить приложение с отладчиком, подключенным к процессу приложения. Для этого чаще всего используется клавиша F5 (Отладка > Начать отладку). Однако сейчас у вас, возможно, не задано ни одной точки останова для проверки кода приложения, поэтому мы сначала зададим их, а затем начнем отладку. Точки останова — это один из самых простых и важных компонентов надежной отладки. Точка останова указывает, где Visual Studio следует приостановить выполнение кода, чтобы вы могли проверить значения переменных или поведение памяти либо выполнение ветви кода.
Если вы открыли файл в редакторе кода, точку останова можно задать, щелкнув в поле слева от строки кода.

. moniker range=»>= vs-2022″ . moniker-end . moniker range=»<= vs-2019″ . moniker-end

Нажмите клавишу F5 (Отладка > Начать отладку) или Начать отладку кнопку на панели инструментов отладки, при этом отладчик выполняется до первой встреченной точки останова. Если приложение еще не запущено, при нажатии клавиши F5 запускается отладчик и выполняется остановка в первой точке останова.
Переход по коду в отладчике с помощью пошаговых команд
Мы указываем сочетания клавиш для большинства команд, так как они ускоряют навигацию по коду вашего приложения. (Аналогичные команды, такие как команды меню, отображаются в круглых скобках.) Дополнительные сведения об использовании команд пошагового выполнения см. в разделе Навигация по коду в отладчике.
Для запуска приложения с подключенным отладчиком нажмите клавишу F11 (Отладка > Шаг с заходом). F11 — это команда Шаг с заходом, которая выполняет приложение с переходом к следующему оператору. При запуске приложения с помощью клавиши F11 отладчик останавливается на первом выполняемом операторе.

. moniker range=»>= vs-2022″ . moniker-end . moniker range=»<= vs-2019″ alt=»F11 Шаг с заходом» width=»» /> . moniker-end
Желтая стрелка представляет оператор, на котором приостановлен отладчик. В этой же точке приостанавливается выполнение приложения (этот оператор пока не выполнен).
Клавишу F11 удобно использовать для более детальной проверки потока выполнения. (Мы также покажем другие варианты более быстрого перемещения по коду.) По умолчанию отладчик пропускает непользовательский код (дополнительные сведения см. в статье об отладке в режиме «Только мой код»).
[!NOTE] В управляемом коде вы увидите диалоговое окно с запросом о том, хотите ли вы получать уведомления при автоматическом обходе свойств и операторов (поведение по умолчанию). Если вы хотите изменить этот параметр позже, отключите параметр Шаг с обходом свойств и операторов в меню Сервис > Параметры в разделе Отладка.
Шаг с обходом по коду для пропуска функций
Когда вы находитесь на строке кода, представляющей собой вызов функции или метода, можно нажать клавишу F10 (Отладка > Шаг с обходом) вместо F11.
Клавиша F10 продолжает выполнение отладчика без захода в функции или методы в коде приложения (код продолжает выполняться). Нажав клавишу F10, вы можете обойти код, который вас не интересует. Так можно быстро перейти к важному для вас коду. Дополнительные сведения об использовании команд пошагового выполнения см. в разделе Навигация по коду в отладчике.
Быстрое выполнение до точки в коде с помощью мыши
Использование кнопки Выполнение до щелкнутого аналогично установке временной точки останова. Кроме того, эта команда удобна для быстрой работы в видимой области кода приложения. Выполнение до щелкнутого можно использовать в любом открытом файле. Дополнительные сведения об этой функции и аналогичных функциях навигации см. в разделе Выполнение до определенного места в коде.

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

. moniker range=»>= vs-2022″ . moniker-end . moniker range=»<= vs-2019″ alt=»Снимок экрана: отладчик Visual Studio отображает кнопку "Выполнение до щелкнутого" слева от вызова функции.» width=»» /> . moniker-end
[!NOTE] Кнопка выполнения до щелкнутого (Выполнить до этого места) доступна начиная с версии [!includevs_dev15].
Нажмите кнопку выполнения до щелкнутого (Выполнить до этого места). Отладчик продолжает выполнение до строки кода, которую вы щелкнули.
Вывод отладчика из текущей функции
В некоторых случаях может потребоваться продолжить сеанс отладки, однако полностью проведя отладчик сквозь текущую функцию.
Нажмите клавиши SHIFT+F11 (или выберите Отладка > Шаг с выходом).
Эта команда возобновляет выполнение приложения (и перемещает отладчик) до возврата текущей функции.
Выполнить до текущей позиции
Если вы находитесь в режиме редактирования кода (то есть работа отладчика не приостановлена), щелкните правой кнопкой мыши строку кода в приложении и выберите команду Выполнить до текущей позиции (или нажмите клавиши CTRL+F10). Эта команда запускает отладку и задает временную точку останова на текущей строке кода. Дополнительные сведения об этой функции и аналогичных функциях навигации см. в разделе Выполнение до определенного места в коде.

. moniker range=»>= vs-2022″ . moniker-end . moniker range=»<= vs-2019″ alt=»Выполнить до текущей позиции» width=»» /> . moniker-end
Если имеются заданные точки останова, отладчик приостанавливается в первой достигнутой точке останова.
Нажимайте клавишу F5, пока не достигнете строки кода, для которой выбрали Выполнить до текущей позиции.
Эта команда удобна, когда вы редактируете код и хотите быстро задать временную точку останова и одновременно запустить отладчик.
[!NOTE] Вы можете использовать функцию Выполнить до текущей позиции в окне Стек вызовов во время отладки.
Быстрый перезапуск приложения

Нажмите кнопку Перезапустить на панели инструментов отладки (или нажмите клавиши CTRL+SHIFT+F5).
Кнопка Перезапустить позволяет сэкономить время, затрачиваемое на остановку приложения и перезапуск отладчика. Отладчик приостанавливается в первой точке останова, достигнутой при выполнении кода.

Если вы хотите остановить отладчик и вернуться в редактор кода, вы можете нажать красную кнопку вместо Перезапустить.
. moniker range=»>= vs-2022″
Редактирование кода в реальном времени
Visual Studio 2022 поддерживает динамическое редактирование кода в процессе отладки. Дополнительные сведения см. в следующих разделах.
. moniker-end . moniker range=»<= vs-2019″
Изменение кода и продолжение отладки (C#, VB, C++, XAML)
В большинстве языков, поддерживаемых Visual Studio, можно изменять код во время сеанса отладки, а затем продолжать отладку. Для использования этой функции щелкните код, чтобы установить в нем курсор, когда отладчик приостановлен, внесите изменения и нажмите клавишу F5, F10 или F11, чтобы продолжить отладку. Дополнительные сведения об этой функции и ее ограничениях см. в статье Изменить и продолжить.
Сведения об изменении кода XAML во время сеанса отладки см. в статье Создание и отладка выполняющегося кода XAML с помощью горячей перезагрузки XAML. . moniker-end
Проверка переменных с помощью подсказок по данным
Теперь, когда вы немного освоились, у вас есть хорошая возможность проверить состояние приложения (переменные) с помощью отладчика. Функции, позволяющие проверять переменные, являются одними из самых полезных в отладчике. Реализовывать эту задачу можно разными способами. Часто при попытке выполнить отладку проблемы пользователь старается выяснить, хранятся ли в переменных значения, которые требуются в определенном состоянии приложения. Подробные сведения об использовании подсказок по данным см. в разделе Просмотр значений данных в подсказках по данным.
В режиме приостановки в отладчике наведите указатель мыши на объект, чтобы увидеть его текущее значение или значение по умолчанию.

. moniker range=»>= vs-2022″ . moniker-end . moniker range=»<= vs-2019″ . moniker-end
Если переменная имеет свойства, объект можно развернуть, чтобы увидеть все его свойства.
Часто при отладке бывает необходимо быстро проверить значения свойств для объектов. Лучше всего для этого подходят подсказки по данным.
[!TIP] В большинстве поддерживаемых языков можно изменять код во время сеанса отладки. Дополнительные сведения см. в разделе Изменить и продолжить.
Проверка переменных с помощью окон «Видимые» и «Локальные»
В окне Видимые отображаются переменные вместе с текущим значением и типом. Окно Видимые содержит все переменные, используемые в текущей строке или предыдущей строке (в C++ в окне отображаются переменные в трех предыдущих строках кода; сведения о зависящем от языка поведении см. в соответствующей документации). Дополнительные сведения об использовании этих окон см. в статье Проверка переменных в окнах «Видимые» и «Локальные».
Во время отладки взгляните на окно Видимые в нижней части редактора кода.

. moniker range=»>= vs-2022″ . moniker-end . moniker range=»<= vs-2019″ alt=»Окно "Видимые"» width=»» /> . moniker-end
[!NOTE] В JavaScript окно Локальные поддерживается, а окно Видимые — нет.
Взгляните в окно Локальные. В окне Локальные показаны переменные, которые находятся в текущей области.

. moniker range=»>= vs-2022″ . moniker-end . moniker range=»<= vs-2019″ alt=»Окно "Локальные"» width=»» /> . moniker-end
В этом примере объекты this и f находятся в области действия. Дополнительные сведения см. в статье Проверка переменных в окнах «Видимые» и «Локальные».
Установка контрольного значения
В окне Контрольное значение можно указать переменную (или выражение), которую необходимо отслеживать. Дополнительные сведения см. в статье Установка контрольных значений с помощью окон «Контрольное значение» и «Быстрая проверка».
Во время отладки щелкните правой объект кнопкой мыши и выберите пункт Добавить контрольное значение.

. moniker range=»>= vs-2022″ . moniker-end . moniker range=»<= vs-2019″ alt=»Окно "Контрольное значение"» width=»» /> . moniker-end
В этом примере у вас есть контрольное значение, заданное для объекта, и по мере перемещения по отладчику вы можете наблюдать за изменением его значения. В отличие от других окон переменных, в окне Контрольное значение всегда отображаются просматриваемые вами переменные (они выделяются серым цветом, когда находятся вне области действия).
Просмотр стека вызовов
В окне Стек вызовов показан порядок вызова методов и функций. В верхней строке показана текущая функция. Во второй строке показана функция или свойство, из которого она вызывалась, и т. д. Стек вызовов хорошо подходит для изучения и анализа потока выполнения приложения. Дополнительные сведения см. в статье о просмотре стека вызовов.
[!NOTE] Окно Стек вызовов аналогично перспективе «Отладка» в некоторых интегрированных средах разработки, например Eclipse.
Во время отладки щелкните окно Стек вызовов, которое по умолчанию открыто в нижней правой области.

. moniker range=»>= vs-2022″ . moniker-end . moniker range=»<= vs-2019″ alt=»Изучение стека вызовов» width=»» /> . moniker-end
Дважды щелкните строку кода, чтобы просмотреть исходный код. При этом также изменится текущая область, проверяемая отладчиком. Это не перемещает отладчик.
Для выполнения других задач можно воспользоваться контекстными меню из окна Стек вызовов. Например, можно вставлять точки останова в указанные функции, перезапускать приложение с помощью функции Выполнение до текущей позиции и изучать исходный код.
Когда приложение выдает исключение, отладчик переходит к строке кода, вызвавшей исключение. Подробные сведения см. в разделе Проверка исключения с помощью помощника по исправлению ошибок.

. moniker range=»>= vs-2022″

В этом примере Помощник по исправлению ошибок отображает исключение System.NullReferenceException и ошибку с сообщением о том, что для экземпляра объекта не задана ссылка на объект. Также он сообщает, что строковое значение имело значение NULL при попытке вызвать метод Trim . . moniker-end . moniker range=»<= vs-2019″
В этом примере помощник по исправлению ошибок показывает исключение System.Argument и сообщение об ошибке, где сказано, что путь имеет недопустимую форму. Таким образом, мы знаем, что ошибка произошла в аргументе метода или функции.
В этом примере вызов DirectoryInfo выдал ошибку на пустой строке, хранящейся в переменной value . . moniker-end
Помощник по исправлению ошибок — это отличная функция, которая помогает отлаживать ошибки. Используя помощник по исправлению ошибок, вы также можете, например, просмотреть сведения об ошибке и добавить контрольное значение. При необходимости вы также можете изменить условия для возникновения конкретного исключения. См. дополнительные сведения об обработке исключений в коде в разделе Приемы и инструменты отладки.
Разверните узел Параметры исключений, чтобы просмотреть дополнительные параметры для обработки исключения этого типа, однако в рамках этого тура ничего менять не требуется.
Вы можете настроить проект для сборки, как описано в статье о конфигурации отладки или выпуска, настроить свойства проекта для отладки или настроить общие параметры для отладки. Кроме того, можно настроить отладчик для вывода пользовательских сведений с помощью таких компонентов, как атрибута DebuggerDisplay либо платформы NatVis для C/C++.
Свойства отладки зависят от типа проекта. Например, можно задать аргумент, который будет передан в приложение при запуске. Чтобы получить доступ к свойствам проекта приложения, щелкните имя проекта правой кнопкой мыши в обозревателе решений и выберите Свойства. Свойства отладки обычно отображаются на вкладке Сборка или Отладка в зависимости от типа проекта.
. moniker range=»>= vs-2022″ Начиная с Visual Studio 2022, вкладка Отладка для проектов .NET содержит ссылку на пользовательский интерфейс профилей запуска отладки, где можно задать свойства, связанные с отладкой.

. moniker-end . moniker range=»<= vs-2019″ alt=»Свойства проекта» width=»» /> . moniker-end
Отладка интерактивных приложений ASP.NET в Службе приложений Azure
Средство Snapshot Debugger создает моментальный снимок рабочих приложений при выполнении интересующего вас кода. Чтобы указать отладчику на необходимость создать моментальный снимок, следует установить точки прикрепления и точки ведения в коде. Отладчик позволяет увидеть источник ошибки, не затрагивая трафик рабочего приложения. Средство Snapshot Debugger позволяет значительно сократить затраты времени на устранение проблем, возникающих в рабочих средах.

. moniker range=»<= vs-2019″ . moniker-end
Коллекция моментальных снимков доступна для приложений ASP.NET, выполняющихся в Службе приложений Azure. Приложения ASP.NET должны выполняться на платформе .NET Framework 4.6.1 или более поздней версии, а приложения ASP.NET Core должны выполняться на платформе .NET Core 2.0 или более поздней версии в Windows.
Просмотр моментальных снимков с помощью возврата на шаг назад в IntelliTrace (Visual Studio Enterprise)
Функция возврата на шаг назад в IntelliTrace автоматически создает моментальный снимок вашего приложения для каждого события точки останова и шага отладчика. Используя записанные моментальные снимки, вы можете возвращаться к этим точкам останова и шагам, просматривая предыдущее состояние приложения. Возможность возврата на шаг назад в IntelliTrace позволяет сэкономить время в тех случаях, когда вам нужно просмотреть предыдущее состояние приложения, но не требуется перезапускать отладку или воссоздавать необходимое состояние приложения.
Для просмотра моментальных снимков и перехода между ними используйте кнопки На шаг назад и На шаг вперед на панели инструментов отладки. С помощью этих кнопок можно перейти к событиям, которые отображаются на вкладке События в окне Средства диагностики.
. moniker range=»<= vs-2019″ . moniker-end
Отладка проблем производительности
Если приложение работает слишком медленно или использует слишком много памяти, возможно, вам следует протестировать его с помощью средств профилирования на раннем этапе. Дополнительные сведения о средствах профилирования, таких как средство загрузки ЦП и анализатор памяти, см. в разделе Знакомство со средствами профилирования.
В этом руководстве вы кратко познакомились с функциями отладчика. Отдельные функции, например точки останова, вы можете изучить более подробно.
3.8 – Использование встроенного отладчика: отслеживание переменных
В предыдущих уроках («3.6 – Использование встроенного отладчика: пошаговое выполнение» и «3.7 – Использование встроенного отладчика: запуск и точки останова») вы узнали, как использовать отладчик для отслеживания пути выполнения вашей программы. Однако пошаговое выполнение программы – это только половина того, что делает отладчик полезным. Отладчик также позволяет вам отслеживать значения переменных при пошаговом выполнении кода, и всё это без изменения кода.
Как и в предыдущих уроках, в наших примерах будет использоваться Visual Studio – если вы используете другую IDE/отладчик, команды могут называться немного по-другому или располагаться в других местах.
Предупреждение
В случае сбоя в работе убедитесь, что ваш проект скомпилирован в конфигурации отладочной сборки (для получения дополнительной информации смотрите раздел «0.9 – Настройка компилятора: конфигурации сборки»). Если вы компилируете свой проект в конфигурации релиза, функции отладчика могут работать некорректно.
Отслеживание переменных
Отслеживание переменной – это процесс проверки значения переменной во время выполнения программы в режиме отладки. Большинство отладчиков предоставляют несколько способов сделать это.
Давайте посмотрим на пример программы:
Это пример довольно простой программы – она печатает числа 1, 3 и 6.
Сначала запустите выполнение до курсора в строке 6.
Рисунок 1 – Точка выполнения программы после запуска выполнения до курсора в строке 6
На данный момент переменная x уже создана и инициализирована значением 1, поэтому, когда мы проверяем значение x , мы должны ожидать увидеть значение 1.
Самый простой способ проверить значение простой переменной, такой как x , – навести указатель мыши на переменную x . Некоторые современные отладчики поддерживают этот метод проверки простых переменных, и это наиболее простой способ сделать это.
Для пользователей Code::Blocks
Если вы используете Code::Blocks, эта опция (необъяснимо) по умолчанию отключена. Давай включим. Сначала перейдите в меню Settings (Настройки) → Debugger (Отладчик). Затем в узле GDB/CDB debugger (отладчик GDB/CDB) выберите профиль Default (по умолчанию). И установите флажок «Evaluate expression under cursor» (Вычислять выражение под курсором).
Рисунок 2 – Включение вычисления выражения под курсором при отладке в Code::Blocks
Наведите курсор мыши на переменную x в строке 6, и вы должны увидеть что-то вроде этого:
Рисунок 3 – Отображение значения переменной x
Обратите внимание, что вы можете навести курсор на переменную x в любом месте, а не только в текущей строке. Например, если мы наведем курсор на x в строке 12, мы увидим то же значение:
Рисунок 4 – Отображение значения переменной x при наведении на нее курсора в любом месте
Если вы используете Visual Studio, вы также можете использовать Быструю проверку (QuickWatch). Выделите имя переменной x с помощью мыши, а затем выберите Быстрая проверка (QuickWatch) из контекстного меню.
Рисунок 5 – Меню вызова окна быстрой проверки значения переменой в Visual Studio
Это вызовет окно, содержащее текущее значение переменной:
Рисунок 6 – Окно быстрой проверки значения переменой в Visual Studio
Закройте окно быстрой проверки, если вы его открыли.
Теперь давайте посмотрим, как изменяется эта переменная по мере выполнения программы. Либо выполните два шага, либо выполнение до курсора на строке 9. Переменная x теперь должна иметь значение 3. Проверьте ее и убедитесь, что это так!
Рисунок 7 – Отображение измененного значения переменной x
Окно просмотра
Использование методов с наведением курсора или окна быстрой проверки для отслеживания переменных – это нормально, если вы хотите узнать значение переменной в определенный момент времени, но это не особенно хорошо подходит для наблюдения за изменением значения переменной при запуске кода, потому что вам постоянно приходится повторно выбирать / наводить курсор на переменную.
Чтобы решить эту проблему, все современные встроенные отладчики предоставляют еще одну функцию, называемую окном просмотра. Окно просмотра (watch window) – это окно, в котором вы можете добавлять переменные, которые вы хотели бы постоянно отслеживать, и эти переменные будут в нем обновляться по мере выполнения вашей программы. Окно просмотра может уже быть на вашем экране, когда вы входите в режим отладки, но если это не так, вы можете вызвать его с помощью команд управления окнами IDE (обычно они находятся в меню View (Вид) или Debug (Отладка)).
Для пользователей Visual Studio
В Visual Studio меню просмотра можно найти в меню Отладка (Debug) → Окна (Windows) → Контрольные значения (Watch) → Контрольные значения 1 (Watch 1). Обратите внимание, что для включения этой опции вы должны находиться в режиме отладки, поэтому сначала запустите свою программу.
Расположение этого окна (закреплено слева, справа или снизу) может отличаться. Вы можете изменить место закрепления, перетащив вкладку Контрольные значения на другую сторону окна приложения.
Для пользователей Code::Blocks
В Code::Blocks меню просмотра можно найти в меню Debug (Отладка) → Debugging windows (Окна отладки) → Watches (Просмотр). Это окно, скорее всего, появится отдельно. Вы можете закрепить его в главном окне, перетащив его.
Теперь вы должны увидеть что-то вроде этого:
Рисунок 8 – Окно отслеживания значений переменных
Окно просмотра может уже содержать или не содержать что-либо.
Обычно есть два разных способа добавить переменные в окно просмотра:
- откройте окно просмотра и введите имя переменной, которую вы хотите отслеживать, в крайнем левом столбце окна просмотра.
- в окне редактора кода кликните правой кнопкой мыши на переменной, которую вы хотите отслеживать, и выберите «Добавить контрольное значение» (Add Watch) (Visual Studio) или «Watch x» (Отслеживать x) (замените x на имя своей переменной) (Code::Blocks).
Если вы еще не находитесь в сеансе отладки с маркером выполнения в строке 9 вашей программы, запустите новый сеанс отладки и запустите выполнение до курсора на строке 9.
Теперь добавьте переменную «x» в свой список отслеживания. Вы должны увидеть следующее:
Рисунок 9 – Значение переменной x в окне отслеживания
Теперь сделайте два шага с обходом или запустите выполнение до курсора на строке 12, и вы увидите, что значение x изменилось с 3 на 6.
Переменные, выходящие за пределы области видимости (например, локальная переменная внутри функции, из которой уже был выполнен возврат к вызывающей стороне), останутся в вашем окне просмотра, но, как правило, будут либо помечены как «недоступные», либо могут отображать последнее известное значение, но выделенное серым цветом. Если переменная возвращается в область видимости (например, функция вызывается снова), ее значение снова начинает отображаться. Таким образом, можно оставить переменные в окне просмотра, даже если они находятся вне области видимости.
Использование окна просмотра – лучший способ наблюдать за изменением значения переменной с течением времени по мере выполнения программы.
Окно просмотра также может вычислять выражения
Окно просмотра также позволяет вам вычислять простые выражения. Если вы еще этого не сделали, запустите выполнение до курсора на строке 12. Затем попробуйте ввести x + 2 в окно просмотра и посмотрите, что произойдет (результат должен быть равен 8).
Вы также можете выделить выражение в своем коде, а затем проверить значение этого выражения, наведя курсор мыши или добавив его в окно просмотра через контекстное меню, вызываемое правой кнопкой мыши.
Предупреждение
Идентификаторы в отслеживаемых выражениях будут вычислять свои текущие значения. Если вы хотите знать, какое значение на самом деле вычисляет выражение в вашем коде, сначала запустите выполнение до курсора к нему, чтобы все идентификаторы имели правильные значения.
Отслеживание локальных переменных
Поскольку отслеживание значений локальных переменных внутри функции является обычным делом при отладке, многие отладчики предоставляют способ быстро просмотреть значение всех локальных переменных в области видимости.
Для пользователей Visual Studio
В Visual Studio вы можете увидеть значение всех локальных переменных в окне Локальные (Locals), которое можно найти в меню Отладка (Debug) → Окна (Windows) → Локальные (Locals). Обратите внимание, что вы должны находиться в сеансе отладки, чтобы активировать это окно.
Для пользователей Code::Blocks
В Code::Blocks это интегрировано в окно Watch (Просмотр) в узле Locals (Локальные переменные). Если вы их не видите, значит, их либо нет, либо вам нужно развернуть узел.
Если вы просто хотите посмотреть значение локальной переменной, сначала проверьте окно локальных переменных. Она уже должна быть там.