3.8 – Использование встроенного отладчика: отслеживание переменных
В предыдущих уроках («3.6 – Использование встроенного отладчика: пошаговое выполнение» и «3.7 – Использование встроенного отладчика: запуск и точки останова») вы узнали, как использовать отладчик для отслеживания пути выполнения вашей программы. Однако пошаговое выполнение программы – это только половина того, что делает отладчик полезным. Отладчик также позволяет вам отслеживать значения переменных при пошаговом выполнении кода, и всё это без изменения кода.
Как и в предыдущих уроках, в наших примерах будет использоваться Visual Studio – если вы используете другую IDE/отладчик, команды могут называться немного по-другому или располагаться в других местах.
Предупреждение
В случае сбоя в работе убедитесь, что ваш проект скомпилирован в конфигурации отладочной сборки (для получения дополнительной информации смотрите раздел «0.9 – Настройка компилятора: конфигурации сборки»). Если вы компилируете свой проект в конфигурации релиза, функции отладчика могут работать некорректно.
Отслеживание переменных
Отслеживание переменной – это процесс проверки значения переменной во время выполнения программы в режиме отладки. Большинство отладчиков предоставляют несколько способов сделать это.
Давайте посмотрим на пример программы:
#include int main() < int x< 1 >; std::cout
Это пример довольно простой программы – она печатает числа 1, 3 и 6.
Сначала запустите выполнение до курсора в строке 6.

На данный момент переменная x уже создана и инициализирована значением 1, поэтому, когда мы проверяем значение x , мы должны ожидать увидеть значение 1.
Самый простой способ проверить значение простой переменной, такой как x , – навести указатель мыши на переменную x . Некоторые современные отладчики поддерживают этот метод проверки простых переменных, и это наиболее простой способ сделать это.
Для пользователей Code::Blocks
Если вы используете Code::Blocks, эта опция (необъяснимо) по умолчанию отключена. Давай включим. Сначала перейдите в меню Settings (Настройки) → Debugger (Отладчик). Затем в узле GDB/CDB debugger (отладчик GDB/CDB) выберите профиль Default (по умолчанию). И установите флажок «Evaluate expression under cursor» (Вычислять выражение под курсором).

Наведите курсор мыши на переменную x в строке 6, и вы должны увидеть что-то вроде этого:

Обратите внимание, что вы можете навести курсор на переменную x в любом месте, а не только в текущей строке. Например, если мы наведем курсор на x в строке 12, мы увидим то же значение:

Если вы используете Visual Studio, вы также можете использовать Быструю проверку (QuickWatch). Выделите имя переменной x с помощью мыши, а затем выберите Быстрая проверка (QuickWatch) из контекстного меню.

Это вызовет окно, содержащее текущее значение переменной:

Закройте окно быстрой проверки, если вы его открыли.
Теперь давайте посмотрим, как изменяется эта переменная по мере выполнения программы. Либо выполните два шага, либо выполнение до курсора на строке 9. Переменная x теперь должна иметь значение 3. Проверьте ее и убедитесь, что это так!

Окно просмотра
Использование методов с наведением курсора или окна быстрой проверки для отслеживания переменных – это нормально, если вы хотите узнать значение переменной в определенный момент времени, но это не особенно хорошо подходит для наблюдения за изменением значения переменной при запуске кода, потому что вам постоянно приходится повторно выбирать / наводить курсор на переменную.
Чтобы решить эту проблему, все современные встроенные отладчики предоставляют еще одну функцию, называемую окном просмотра. Окно просмотра (watch window) – это окно, в котором вы можете добавлять переменные, которые вы хотели бы постоянно отслеживать, и эти переменные будут в нем обновляться по мере выполнения вашей программы. Окно просмотра может уже быть на вашем экране, когда вы входите в режим отладки, но если это не так, вы можете вызвать его с помощью команд управления окнами IDE (обычно они находятся в меню View (Вид) или Debug (Отладка)).
Для пользователей Visual Studio
В Visual Studio меню просмотра можно найти в меню Отладка (Debug) → Окна (Windows) → Контрольные значения (Watch) → Контрольные значения 1 (Watch 1). Обратите внимание, что для включения этой опции вы должны находиться в режиме отладки, поэтому сначала запустите свою программу.
Расположение этого окна (закреплено слева, справа или снизу) может отличаться. Вы можете изменить место закрепления, перетащив вкладку Контрольные значения на другую сторону окна приложения.
Для пользователей Code::Blocks
В Code::Blocks меню просмотра можно найти в меню Debug (Отладка) → Debugging windows (Окна отладки) → Watches (Просмотр). Это окно, скорее всего, появится отдельно. Вы можете закрепить его в главном окне, перетащив его.
Теперь вы должны увидеть что-то вроде этого:

Окно просмотра может уже содержать или не содержать что-либо.
Обычно есть два разных способа добавить переменные в окно просмотра:
- откройте окно просмотра и введите имя переменной, которую вы хотите отслеживать, в крайнем левом столбце окна просмотра.
- в окне редактора кода кликните правой кнопкой мыши на переменной, которую вы хотите отслеживать, и выберите «Добавить контрольное значение» (Add Watch) (Visual Studio) или «Watch x» (Отслеживать x) (замените x на имя своей переменной) (Code::Blocks).
Если вы еще не находитесь в сеансе отладки с маркером выполнения в строке 9 вашей программы, запустите новый сеанс отладки и запустите выполнение до курсора на строке 9.
Теперь добавьте переменную «x» в свой список отслеживания. Вы должны увидеть следующее:

Теперь сделайте два шага с обходом или запустите выполнение до курсора на строке 12, и вы увидите, что значение x изменилось с 3 на 6.
Переменные, выходящие за пределы области видимости (например, локальная переменная внутри функции, из которой уже был выполнен возврат к вызывающей стороне), останутся в вашем окне просмотра, но, как правило, будут либо помечены как «недоступные», либо могут отображать последнее известное значение, но выделенное серым цветом. Если переменная возвращается в область видимости (например, функция вызывается снова), ее значение снова начинает отображаться. Таким образом, можно оставить переменные в окне просмотра, даже если они находятся вне области видимости.
Использование окна просмотра – лучший способ наблюдать за изменением значения переменной с течением времени по мере выполнения программы.
Окно просмотра также может вычислять выражения
Окно просмотра также позволяет вам вычислять простые выражения. Если вы еще этого не сделали, запустите выполнение до курсора на строке 12. Затем попробуйте ввести x + 2 в окно просмотра и посмотрите, что произойдет (результат должен быть равен 8).
Вы также можете выделить выражение в своем коде, а затем проверить значение этого выражения, наведя курсор мыши или добавив его в окно просмотра через контекстное меню, вызываемое правой кнопкой мыши.
Предупреждение
Идентификаторы в отслеживаемых выражениях будут вычислять свои текущие значения. Если вы хотите знать, какое значение на самом деле вычисляет выражение в вашем коде, сначала запустите выполнение до курсора к нему, чтобы все идентификаторы имели правильные значения.
Отслеживание локальных переменных
Поскольку отслеживание значений локальных переменных внутри функции является обычным делом при отладке, многие отладчики предоставляют способ быстро просмотреть значение всех локальных переменных в области видимости.
Для пользователей Visual Studio
В Visual Studio вы можете увидеть значение всех локальных переменных в окне Локальные (Locals), которое можно найти в меню Отладка (Debug) → Окна (Windows) → Локальные (Locals). Обратите внимание, что вы должны находиться в сеансе отладки, чтобы активировать это окно.
Для пользователей Code::Blocks
В Code::Blocks это интегрировано в окно Watch (Просмотр) в узле Locals (Локальные переменные). Если вы их не видите, значит, их либо нет, либо вам нужно развернуть узел.
Если вы просто хотите посмотреть значение локальной переменной, сначала проверьте окно локальных переменных. Она уже должна быть там.
Использование окон памяти в отладчике Visual Studio (C#, C++, Visual Basic, F#)
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Во время отладки в окне Память отображается используемая приложением область памяти.
В окнах отладчика, таких как Контрольные, Видимые, Локальные, и в диалоговом окне Быстрая проверка отображаются переменные, которые хранятся в определенных областях памяти. Окно Память показывает более полную картину. Такое представление памяти может быть полезно при анализе больших частей данных (например, буферов или больших строк), которые плохо отображаются в других окнах.
В окне Память могут отображаться не только данные. В нем может отображаться все, что находится в области памяти, включая данные, код или случайные биты мусора из свободного участка памяти.
Окно Память недоступно для отладки скриптов и SQL. Эти языки не распознают концепцию памяти.
Открытие окна «Память»
Как и другие окна отладчика, окна Память доступны только во время сеанса отладки.
Чтобы включить окна Память, необходимо выбрать параметр Включить отладку на уровне адреса в разделе Инструменты>Параметры (или Отладка>Параметры) >Отладка>Общие.
Открытие окна «Память»
- Убедитесь, что в разделе Инструменты>Параметры (или Отладка>Параметры) >Отладка>Общие выбран параметр Включить отладку на уровне адреса.
- Запустите отладку, щелкнув зеленую стрелку, нажав клавишу F5 или выбрав команду Отладка>Начать отладку.
- В разделе Отладка>Windows>Память выберите Память 1, Память 2, Память 3 или Память 4. (Некоторые выпуски Visual Studio предлагают только одно окно Память.)
Перемещение по окну «Память»
Адресное пространство компьютера велико, и вы можете легко потерять нужное место при прокрутке окна Память.
Старшие адреса памяти отображаются в нижней части экрана. Для просмотра старших адресов следует прокрутить экран вниз. Для просмотра младших адресов следует прокрутить экран вверх.
Можно мгновенно перейти к указанному адресу в окне Память, используя перетаскивание или введя адрес в поле Адрес. Поле Адрес принимает буквенно-цифровые адреса и выражения, которые при вычислении дают адрес, например e.User.NonroamableId .
Чтобы принудительно выполнить немедленное повторное вычисление выражения в поле Адрес, выберите значок Автоматический пересчет.
По умолчанию окно Память обрабатывает выражения Адрес как динамические выражения, которые вычисляются повторно по мере выполнения приложения. Динамические выражения могут быть удобны, например, для просмотра участка памяти, на который ссылается переменная-указатель.
Использование перетаскивания для перемещения к области памяти:
- Выберите в любом окне отладчика адрес памяти или переменную-указатель, содержащую адрес памяти.
- Перетащите адрес или указатель в окно Память. Этот адрес появляется в поле Адрес, а окно Память изменяется, чтобы отобразить этот адрес в верхней части.
Перемещение к участку памяти путем его ввода в поле «Адрес»:
- Введите или вставьте адрес или выражение в поле Адрес и нажмите клавишу ВВОД или выберите значение в раскрывающемся списке в поле Адрес. Окно Память изменяется, чтобы отобразить этот адрес в верхней части.
Настройка окна «Память»
По умолчанию содержимое памяти отображается в виде шестнадцатеричных однобайтовых целых чисел, а ширина окна определяет количество отображаемых столбцов. Можно настроить способ отображения содержимого памяти в окне Память.
Изменение формата содержимого памяти:
- Щелкните правой кнопкой мыши в окне Память и выберите нужные форматы в контекстном меню.
Изменение числа столбцов в окне «Память»:
- Щелкните стрелку раскрывающегося списка рядом с полем Столбцы и выберите число отображаемых столбцов или выберите Авто для автоматической подгонки по ширине окна.
Если требуется, чтобы содержимое окна Память не изменялось при выполнении приложения, можно отключить вычисление динамических выражений.
Включение или выключение вычисления в режиме реального времени:
-
Щелкните правой кнопкой мыши в окне Память и выберите в контекстном меню пункт Автоматический пересчет.
Примечание. Вычисление динамических выражений представлено переключателем и по умолчанию включено, поэтому при выборе Автоматический пересчет оно отключается. Чтобы снова включить его, выберите Автоматический пересчет.
Можно скрывать или отображать панель инструментов в верхней части окна Память. Когда панель инструментов скрыта, поле Адрес и другие инструменты недоступны.
Переключение отображения панели инструментов:
- Щелкните правой кнопкой мыши в окне Память и выберите в контекстном меню пункт Показать панель инструментов. Панель инструментов появится или исчезнет, в зависимости от своего предыдущего состояния.
Следуйте указателю через память (C/C++)
В приложениях машинного кода можно использовать имена регистров в качестве динамических выражений. Например, можно использовать указатель стека для отслеживания стека.
Отслеживание указателя в памяти:
- В поле Адрес окна Память введите выражение указателя, которое находится в текущей области. В зависимости от языка может возникнуть необходимость в ее разыменовании.
- Нажмите ВВОД. При использовании команды отладки, такой как Шаг, адрес памяти, отображаемый в поле Адрес и в верхней части окна Память, автоматически изменяется при изменении указателя.
Просмотр указателей памяти (.NET)
Если вы хотите просмотреть содержимое объекта .NET на основе указателя памяти, например адреса, полученного из моментального снимка кучи, это можно сделать с помощью @Address нотации. Адрес должен быть указателем на память, например 0x1D102A581B0. Введите указатель памяти, используя @Address нотацию в поле «Адрес памяти«. Кроме того, можно использовать ту же нотацию для добавления часов с помощью окна «Контроль».
Чтобы получить адрес указателя памяти из моментального снимка кучи, откройте дамп кучи, выберите «Отладочная управляемая память», которая открывает средство использования памяти. Щелкните правой кнопкой мыши интересующий объект и выберите «Просмотреть экземпляры«.
См. также
Как увидеть значения переменных при отладке?
Одной из основных задач, которые необходимо выполнить при использовании отладчика, является определение значения различных переменных. В Visual Studio есть различные окна, которые могут отображать эту информацию, и позволяют разобраться с конкретными, которые вы ищете. Лесли Ричардсон (@lyrichardson01), PM в команде Visual Studio, покажет нам некоторые из ее любимых способов навигации по переменным в отладчике.
Знаете ли вы. Вы можете узнать все о отладчике на Документация Майкрософт!
Одной из основных задач, которые необходимо выполнить при использовании отладчика, является определение значения различных переменных. В Visual Studio есть различные окна, которые могут отображать эту информацию, и позволяют разобраться с конкретными, которые вы ищете. Лесли Ричардсон (@lyrichardson01), PM в команде Visual Studio, покажет нам некоторые из ее любимых способов навигации по переменным в отладчике.
Знаете ли вы. Вы можете узнать все о отладчике на Документация Майкрософт!
Просмотр значений данных в подсказках по данным в редакторе кода
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Подсказки по данным предоставляют удобный способ просмотра сведений о переменных в программе во время отладки. Подсказки по данным работают только в режиме прерывания и только с переменными, которые находятся в пределах текущей области выполнения. Если вы не знакомы с процессом отладки кода, перед выполнением задач в этой статье рекомендуется прочесть документ об отладке для начинающих и статью Методы и инструменты отладки.
Работа с подсказками по данным
Подсказки по данным появляются только в режиме прерывания и только с переменными, которые находятся в пределах текущей области выполнения.
Отображение подсказки по данным
- Установите точку останова в коде и начните отладку, нажав клавишу F5 или выбрав команду Отладка>Начать отладку.
- При приостановке в точке останова наведите указатель мыши на любую переменную в текущей области. Появится подсказка по данным с именем и текущим значением переменной.
Как сделать подсказку по данным прозрачной
Чтобы сделать подсказку по данным прозрачной для просмотра находящегося за ней кода, нажмите клавишу CTRL, когда подсказка отображается. Подсказка будет прозрачной, пока удерживается клавиша CTRL. Для закрепленных или плавающих подсказок этот метод не работает.
Развернутая подсказка по данным
Начиная с Visual Studio 2022 с обновлением 1 появилась возможность сохранять подсказку по данным развернутой, пока вы не щелкнете в другом месте. Это называется закрепленной подсказкой по данным. Чтобы включить эту функцию, выберите Инструменты>Параметры>Отладка, а затем на вкладке Общие выберите Сохранять развернутые подсказки по данным до щелчка в другим месте.
Закрепление подсказок по данным
Для закрепления подсказки по данным, чтобы она оставалась открытой, щелкните значок кнопки Прикрепить к источнику.

Закрепленную подсказку можно перемещать, перетаскивая ее в окне кода. Значок кнопки отображается во внутреннем поле рядом со строкой, к которой прикреплена подсказка.
Подсказки по данным всегда определяются в контексте того места, где приостановлено выполнение, а не в контексте текущего местоположения курсора или местоположения подсказки. Если в другой функции навести указатель на переменную, имеющую такое же имя, что и переменная в текущем контексте, отобразится значение переменной в текущем контексте.
Открепление подсказки по данным от источника
Чтобы сделать закрепленную подсказку по данным плавающей, наведите на нее указатель мыши и выберите значок кнопки в контекстном меню.
Значок кнопки примет открепленную форму, и подсказка станет плавающей, или вы сможете перетаскивать ее по всем открытым окнам. Плавающие подсказки по данным закрываются при завершении сеанса отладки.
Повторное закрепление подсказок по данным
Чтобы повторно закрепить плавающую подсказку по данным, наведите на нее указатель мыши в редакторе кода и щелкните значок кнопки. Значок кнопки примет прикрепленную форму, и подсказка снова станет закрепленной в этом окне кода.
Если плавающая подсказка находится не в окне исходного кода, значок кнопки недоступен, и подсказку нельзя закрепить повторно. Чтобы значок кнопки стал доступен, верните подсказку в окно редактора кода, перетащив ее или переместив фокус в окно кода.
Закрытие подсказки по данным
Чтобы закрыть подсказку по данным, наведите на нее указатель мыши и выберите значок закрытия (x) в контекстном меню.
Закрытие всех подсказок по данным
Чтобы закрыть все подсказки по данным, в меню Отладка выберите команду Очистить все подсказки по данным.
Закрытие всех подсказок по данным для определенного файла
Чтобы закрыть все подсказки по данным для определенного файла, в меню Отладка выберите команду Очистить все подсказки по данным, прикрепленные к .
Развертывание и изменение сведений
Вы можете использовать подсказки по данным, чтобы развернуть массив, структуру или объект для просмотра его элементов. Кроме того, вы можете изменить значение переменной из подсказки по данным.
Развертывание переменной
Чтобы развернуть объект в подсказке по данным для просмотра его элементов, наведите указатель мыши на стрелки развертывания перед именами элементов. Элементы отобразятся в виде дерева. Для закрепленной подсказки по данным нажмите + перед именем переменной, а затем разверните дерево.

Для перемещения вверх и вниз по развернутому представлению можно использовать мышь или клавиши со стрелками.
Вы также можете закреплять развернутые элементы в закрепленной подсказке по данным, наводя на них указатель мыши и выбирая значок кнопки. После свертывания дерева выбранные элементы будут отображаться в закрепленной подсказке.
Изменение значения переменной
Чтобы изменить значение переменной или элемента в подсказке по данным, выберите значение, введите новое значение и нажмите клавишу ВВОД. Значения, предназначенные только для чтения, недоступны для выбора.
Закрепление свойств в подсказках по данным
Эта возможность поддерживается для .NET Core 3.0 или более поздних версий.
С помощью средства Закрепляемые свойства можно быстро проверять объекты по их свойствам в подсказках по данным. Чтобы воспользоваться этим средством, наведите указатель мыши на свойство и выберите значок булавки либо щелкните правой кнопкой мыши и в контекстном меню выберите пункт Закрепить элемент в избранном. При этом это свойство всплывает в верхней части списка свойств объекта, а имя и значение свойства отображаются в правом столбце подсказки по данным. Чтобы открепить свойство, щелкните значок булавки еще раз или в контекстном меню выберите пункт Открепить элемент в избранном.
При просмотре списка свойств объекта в подсказке по данным можно также включать и отключать отображение имен свойств и отфильтровывать незакрепленные свойства. Чтобы получить доступ к любой из этих команд, щелкните правой кнопкой мыши строку со свойством и выберите в контекстном меню команду Показать только закрепленные элементы или Скрыть имена закрепленных элементов в значениях.
Визуализация сложных типов данных
Значок с увеличением стекла рядом с переменной или элементом в подсказке данных означает, что для переменной доступны один или несколько визуализаторов, таких как визуализатор текста. Визуализаторы выводят сведения в более наглядной, иногда графической, форме.
![]()
Чтобы просмотреть элемент с помощью визуализатора по умолчанию для типа данных, выберите значок с увеличением стекла. Щелкните стрелку рядом со значком лупы, чтобы выбрать вариант из списка визуализаторов для типа данных.
Добавление переменной в окно контрольных значений
Если вы хотите продолжить наблюдение за переменной, то можете добавить ее в окно контрольных значений из подсказки по данным. Щелкните правой кнопкой мыши переменную в подсказке по данным и выберите пункт Добавить контрольное значение.
Переменная появится в окне Контрольные значения. Если в используемом выпуске Visual Studio поддерживается несколько окон Контрольные значения, переменная появится в окне Контрольные значения 1.
Импорт и экспорт подсказок по данным
Подсказки по данным можно экспортировать в XML-файл. Затем этот файл можно использовать совместно или изменять в текстовом редакторе. Вы также можете импортировать XML-файл подсказок по данным, который получили или изменили.
Экспорт подсказок по данным
- Выберите команду Отладка>Экспорт подсказок по данным.
- В диалоговом окне Экспорт подсказок по данным перейдите к месту, где нужно сохранить XML-файл, введите им файла и нажмите кнопку Сохранить.
Импорт подсказок по данным
- Выберите команду Отладка>Импорт подсказок по данным.
- В диалоговом окне Импорт подсказок по данным выберите XML-файл подсказок, который хотите, и нажмите Открыть.
См. также
- Что такое отладка?
- Методы и инструменты отладки
- Первое знакомство с отладкой
- Просмотр данных в отладчике
- Окна «Контрольные значения» и «Быстрая проверка»
- Создание пользовательских визуализаторов для объектов .NET