Как просмотреть значения переменных в Visual Studio при отладке
Обновлено: 23.11.2024
Visual Studio изобилует различными функциями отладки, окнами и панелями. И они довольно хороши в том, что они могут сделать. Однако такое изобилие инструментов и опций часто приводит к когнитивной перегрузке — как, черт возьми, вы должны знать, какой из них и когда использовать?
Однако есть одна конкретная функция, которая оказалась наиболее полезной при поиске и исправлении ошибок, а также при создании любого прототипа или тестировании новых идей. Если бы мне пришлось назвать мой любимый инструмент в сундуке отладки VS, это было бы окно QuickWatch.
Давайте посмотрим, как это может помочь вам сэкономить много времени и избежать догадок при отладке и разработке приложений.
Ничего больше не работает!
Возможно, вам знакома по крайней мере одна из следующих ситуаций: ваше приложение вчера работало нормально, но прямо сейчас оно падает с загадочным исключением или ошибкой. Или, возможно, вы смотрите на код, который вы написали месяц назад, и ничего не можете вспомнить или даже не можете понять, что, черт возьми, он делает. Или, может быть, вы просто скопировали и вставили чужой код из Stack Overflow, и он не работает.
Во всех этих ситуациях вам потребуется отладить приложение, чтобы увидеть, что оно делает:
- как продвигается поток выполнения (т. е. какие строки кода когда запускаются)
- как ведут себя условные логические операторы ( if . then , do . while , switch . case и т. д.)
- какие значения имеют локальные, классовые и глобальные переменные
И здесь функция QuickWatch Visual Studio оказывается особенно удобной.
Начать отладку
Прежде чем вы сможете увидеть значения переменных в своем приложении, вам необходимо запустить приложение в режиме отладки. В зависимости от типа вашего приложения настройка может немного отличаться, но общий порядок действий будет таким:
1. Установите точку останова на строке интересующего вас метода
Для этого поместите курсор на эту строку и нажмите F9 . Кроме того, вы можете щелкнуть слева, слева от номеров строк. Вы должны увидеть красную точку, а цвет фона соответствующей строки кода изменится на красный.
2. Запустите приложение в режиме отладки
Для этого нажмите F5 или выберите Отладка -> Начать отладку в меню VS. Это запустит ваше приложение.
3. Получить точку останова
Если вы установите точку останова в логике запуска приложения, например в методе Main() консольного приложения или в одном из ваших методов Startup.cs в веб-приложении, он автоматически сработает, и выполнение будет остановлено. ожидая вашего ввода. Но если вы установите точку останова для определенного метода, вам нужно будет взаимодействовать с вашим приложением, чтобы заставить приложение вызывать этот метод.
Например, если вы отлаживаете логику регистрации пользователей, вам нужно сначала отправить эту страницу регистрации пользователя, чтобы поток выполнения достиг точки останова.
Как просмотреть локальную переменную
Чтобы просмотреть локальную переменную или переменную уровня метода, сделайте следующее:
- Выберите интересующую вас переменную
- Нажмите Ctrl-Alt-Q .
Появится окно QuickWatch, как на картинке выше. В этом окне много всего, так что давайте распакуем его:
Как просмотреть переменную уровня класса
Выберите любое поле, свойство или даже вызовите функцию! QuickWatch оценит выражение и отобразит результат.
Как просмотреть статическую/глобальную переменную
Допустим, у вас есть глобальный класс, который вы используете для чего-то. Я бы не советовал этого делать, но есть несколько причин, по которым он у вас может быть, однако это не является основным пунктом этой статьи. Ради аргумента предположим, что у вас есть только один.
Затем вы можете просмотреть это статическое свойство в QuickWatch следующим образом:
Заключение
Я надеюсь, что вы нашли эту статью полезной и узнали, как проверять различные типы данных с помощью инструмента Visual Studio QuickWatch.
Подсказки по данным предоставляют удобный способ просмотра информации о переменных в вашей программе во время отладки. Подсказки по данным работают только в режиме прерывания и только с переменными, находящимися в текущей области выполнения.Если вы впервые пытаетесь отлаживать код, возможно, вам стоит прочитать Отладка для абсолютных новичков и Методы и инструменты отладки, прежде чем читать эту статью.
Работа с подсказками
Подсказки по данным отображаются только в режиме приостановки и только для переменных, находящихся в текущей области выполнения.
Отображение всплывающей подсказки
Установите точку останова в коде и начните отладку, нажав F5 или выбрав Отладка > Начать отладку.
При паузе в точке останова наведите указатель мыши на любую переменную в текущей области. Появится всплывающая подсказка с указанием имени и текущего значения переменной.
Сделайте подсказку по данным прозрачной
Чтобы сделать подсказку по данным прозрачной, чтобы видеть код, который находится под ней, находясь в подсказке по данным, нажмите клавишу CTRL. Подсказка по данным остается прозрачной, пока вы удерживаете клавишу Ctrl. Это не работает для закрепленных или плавающих подсказок по данным.
Закрепить всплывающую подсказку
Чтобы закрепить всплывающую подсказку, чтобы она оставалась открытой, выберите значок канцелярской кнопки "Прикрепить к источнику".
Вы можете перемещать закрепленную подсказку по данным, перетаскивая ее по окну кода. Рядом со строкой, к которой прикреплена подсказка по данным, появится значок канцелярской кнопки.
Подсказки по данным всегда оцениваются в контексте, в котором выполнение приостановлено, а не в контексте текущего курсора или местоположения подсказки по данным. Если вы наведете указатель мыши на переменную в другой функции, имя которой совпадает с именем переменной в текущем контексте, отобразится значение переменной в текущем контексте.
Открепить подсказку по данным от источника
Чтобы открепить закрепленную подсказку по данным, наведите указатель мыши на подсказку по данным и выберите значок канцелярской кнопки в контекстном меню.
Значок канцелярской кнопки становится незакрепленным, а всплывающая подсказка с данными теперь появляется над всеми открытыми окнами или ее можно перетаскивать. Плавающие подсказки по данным закрываются по окончании сеанса отладки.
Повторно закрепить подсказку
Чтобы повторно закрепить плавающую подсказку по данным в источнике, наведите на нее указатель мыши в редакторе кода и выберите значок канцелярской кнопки. Значок канцелярской кнопки изменится на закрепленное положение, а подсказка по данным снова будет закреплена только в окне кода.
Если подсказка по данным плавает над окном не исходного кода, значок канцелярской кнопки недоступен, и подсказку по данным нельзя повторно закрепить. Чтобы получить доступ к значку канцелярской кнопки, верните всплывающую подсказку в окно редактора кода, перетащив ее или установив фокус окна кода.
Закрыть всплывающую подсказку
Чтобы закрыть подсказку по данным, наведите указатель мыши на подсказку по данным и выберите значок закрытия (x) в контекстном меню.
Закрыть все всплывающие подсказки
Чтобы закрыть все подсказки по данным, в меню "Отладка" выберите "Очистить все подсказки по данным".
Закрыть все всплывающие подсказки для определенного файла
Чтобы закрыть все подсказки по данным для определенного файла, в меню "Отладка" выберите "Очистить все подсказки по данным, прикрепленные к ".
Развернуть и изменить информацию
Подсказки по данным можно использовать для расширения массива, структуры или объекта для просмотра его элементов. Вы также можете изменить значение переменной из подсказки по данным.
Развернуть переменную
Чтобы развернуть объект в подсказке по данным и просмотреть его элементы, наведите указатель мыши на стрелки развертывания перед именами элементов, чтобы отобразить элементы в виде дерева. Для закрепленной подсказки по данным выберите + перед именем переменной, а затем разверните дерево.
Для перемещения вверх и вниз в расширенном представлении можно использовать мышь или клавиши со стрелками на клавиатуре.
Вы также можете закрепить развернутые элементы в закрепленной подсказке по данным, наведя на них указатель мыши и выбрав соответствующие значки кнопок. Затем элементы появляются в закрепленной подсказке по данным после того, как дерево свернуто.
Изменить значение переменной
Чтобы изменить значение переменной или элемента в подсказке по данным, выберите значение, введите новое значение и нажмите клавишу ВВОД. Выбор отключен для значений только для чтения.
Свойства закрепления в подсказках по данным
Вы можете быстро проверять объекты по их свойствам в подсказках по данным с помощью инструмента «Свойства закрепления». Чтобы использовать этот инструмент, наведите указатель мыши на свойство и выберите появившийся значок булавки или щелкните правой кнопкой мыши и выберите параметр «Закрепить элемент как избранный» в появившемся контекстном меню. При этом это свойство всплывает в верхней части списка свойств объекта, а имя и значение свойства отображаются в правом столбце подсказки по данным. Чтобы открепить свойство, снова щелкните значок закрепления или выберите параметр «Открепить участника как избранного» в контекстном меню.
Вы также можете переключать имена свойств и отфильтровывать незакрепленные свойства при просмотре списка свойств объекта в подсказке. Вы можете получить доступ к любому варианту, щелкнув правой кнопкой мыши строку, содержащую свойство, и выбрав в контекстном меню параметры Показать только закрепленные элементы или Скрыть имена закрепленных элементов в значениях.
Визуализация сложных типов данных
Значок увеличительного стекла рядом с переменной или элементом в подсказке по данным означает, что для этой переменной доступен один или несколько визуализаторов, например визуализатор текста. Визуализаторы отображают информацию более осмысленно, иногда графически.
Чтобы просмотреть элемент с помощью визуализатора по умолчанию для данного типа данных, выберите значок увеличительного стекла . Щелкните стрелку рядом со значком увеличительного стекла, чтобы выбрать тип данных из списка визуализаторов.
Добавить переменную в окно просмотра
Если вы хотите продолжить наблюдение за переменной, вы можете добавить ее в окно наблюдения из подсказки по данным. Щелкните правой кнопкой мыши переменную в подсказке по данным и выберите "Добавить контроль".
Переменная появится в окне Watch. Если ваша версия Visual Studio поддерживает более одного окна просмотра, переменная появится в окне просмотра 1.
Импорт и экспорт подсказок по данным
Подсказки по данным можно экспортировать в XML-файл, которым можно поделиться или отредактировать с помощью текстового редактора. Вы также можете импортировать XML-файл DataTip, который вы получили или отредактировали.
Чтобы экспортировать подсказки по данным:
Выберите Отладка > Экспорт подсказок по данным.
В диалоговом окне "Экспорт подсказок по данным" перейдите в папку для сохранения XML-файла, введите имя файла и нажмите кнопку "Сохранить".
Чтобы импортировать подсказки по данным:
Выберите Отладка > Импорт подсказок по данным.
В диалоговом окне "Импорт подсказок по данным" выберите XML-файл подсказок по данным, который нужно открыть, и нажмите кнопку "Открыть".
В окнах Autos и Locals отображаются значения переменных во время отладки. Окна доступны только во время сеанса отладки. Окно Autos показывает переменные, используемые вокруг текущей точки останова. Окно Locals показывает переменные, определенные в локальной области видимости, которая обычно является текущей функцией или методом.
Если вы впервые пытаетесь отлаживать код, возможно, вам стоит прочитать Отладка для абсолютных новичков и Методы и инструменты отладки, прежде чем читать эту статью.
Чтобы открыть окно Autos, во время отладки выберите Debug > Windows > Autos или нажмите Ctrl+Alt+V > A.
Чтобы открыть окно Locals, во время отладки выберите Debug > Windows > Locals или нажмите Alt+4.
Этот раздел относится к Visual Studio для Windows. Информацию о Visual Studio для Mac см. в разделе Визуализация данных в Visual Studio для Mac.
Использование окон Autos и Locals
Массивы и объекты отображаются в окнах Autos и Locals как древовидные элементы управления. Щелкните стрелку слева от имени переменной, чтобы развернуть представление и отобразить поля и свойства. Вот пример объекта System.IO.FileStream в окне Locals:
Красное значение в окне Locals или Autos означает, что значение изменилось с момента последней оценки. Изменение может быть связано с предыдущим сеансом отладки или из-за того, что вы изменили значение в окне.
Числовой формат по умолчанию в окнах отладчика — десятичный. Чтобы изменить его на шестнадцатеричный, щелкните правой кнопкой мыши в окне Locals или Autos и выберите Hexadecimal Display. Это изменение затрагивает все окна отладчика.
Редактировать значения переменных в окне Autos или Locals
Чтобы изменить значения большинства переменных в окнах Autos или Locals, дважды щелкните значение и введите новое значение.
Вы можете ввести выражение для значения, например, a + b . Отладчик принимает большинство допустимых языковых выражений.
В собственном коде C++ вам может потребоваться уточнить контекст имени переменной. Дополнительные сведения см. в разделе Оператор контекста (C++).
Вычисление некоторых выражений может изменить значение переменной или иным образом повлиять на состояние вашей программы. Например, вычисление var1 = ++var2 изменяет значение как var1, так и var2. Говорят, что эти выражения имеют побочные эффекты. Побочные эффекты могут привести к неожиданным результатам, если вы о них не знаете.
Редактирование значений с плавающей запятой может привести к незначительным неточностям из-за преобразования дробных компонентов из десятичной в двоичную. Даже внешне безобидное редактирование может привести к изменению некоторых битов в переменной с плавающей запятой.
Поиск в окне Autos или Locals
Вы можете искать ключевые слова в столбцах «Имя», «Значение» и «Тип» окна «Автоматические» или «Местные» с помощью панели поиска над каждым окном. Нажмите ENTER или выберите одну из стрелок, чтобы выполнить поиск. Чтобы отменить текущий поиск, выберите значок "x" в строке поиска.
Используйте стрелки влево и вправо (Shift+F3 и F3 соответственно) для перехода между найденными совпадениями.
Чтобы сделать поиск более или менее тщательным, используйте раскрывающийся список "Углубление поиска" в верхней части окна "Автоматические" или "Локальные" и выберите глубину поиска во вложенных объектах.
Закрепить свойства в окне Autos или Locals
Вы можете быстро проверять объекты по их свойствам в окнах Autos и Locals с помощью инструмента Pinnable Properties. Чтобы использовать этот инструмент, наведите указатель мыши на свойство и выберите появившийся значок булавки или щелкните правой кнопкой мыши и выберите параметр «Закрепить элемент как избранный» в появившемся контекстном меню. При этом это свойство всплывает в верхней части списка свойств объекта, а имя и значение свойства отображаются в столбце «Значение». Чтобы открепить свойство, снова щелкните значок закрепления или выберите параметр «Открепить участника как избранного» в контекстном меню.
Вы также можете переключать имена свойств и отфильтровывать незакрепленные свойства при просмотре списка свойств объекта в окнах Autos или Locals. Вы можете получить доступ к каждому параметру, нажав кнопки на панели инструментов над окнами Autos или Locals.
Изменить контекст для окна Autos или Locals
Вы можете использовать панель инструментов Debug Location для выбора нужной функции, потока или процесса, что меняет контекст для окон Autos и Locals.
Чтобы включить панель инструментов «Место отладки», щелкните пустую часть области панели инструментов и выберите «Место отладки» в раскрывающемся списке или выберите «Просмотр» > «Панели инструментов» > «Место отладки».
Установите точку останова и начните отладку. При достижении точки останова выполнение приостанавливается, и вы можете увидеть расположение на панели инструментов «Место отладки».
Для разных языков кода в окне Autos отображаются разные переменные.
Установите точку останова на строке c = 3; и запустите отладчик. Когда выполнение приостанавливается, отображается окно Autos:
Значение c равно 0, поскольку строка c = 3 еще не выполнена.
В C++ окно Autos отображает используемые переменные как минимум в трех строках перед текущей строкой, где выполнение приостановлено. Например, в коде C++ объявите шесть переменных:
Установите точку останова на строке e = 5; и запустить отладчик. Когда выполнение остановится, появится окно Autos:
Переменная e не инициализирована, поскольку строка e = 5 еще не выполнена.
Просмотр возвращаемых значений вызовов методов
Чтобы увидеть возвращаемые значения вызовов методов sumVars() и subtractVars() в окне Autos:
Установите точку останова на int x = sumVars(a, b) + subtractVars(c, d); линия.
Запустите отладку и, когда выполнение приостановится в точке останова, выберите «Перешагнуть» или нажмите F10. Вы должны увидеть следующие возвращаемые значения в окне Autos:
В предыдущем руководстве мы познакомились с некоторыми основами отладки в Visual Studio. Сюда входят точки останова, навигация по коду и исследование переменных с помощью всплывающей подсказки по данным и быстрого просмотра.
В этом руководстве мы рассмотрим все окна Visual Studio для отладки.
Окно просмотра
Окно Watch позволяет вам видеть значения переменных и выражений во время отладки. Это похоже на всплывающую подсказку по данным, которую вы получаете при наведении курсора на переменную, за исключением того, что вы можете написать любое выражение, которое хотите. Он доступен в Debug | Окна | смотреть | Смотреть 1 или Ctrl + Alt + W + 1.
Вот пример:
В Visual Studio есть 4 окна наблюдения, которые можно использовать в разных контекстах (Наблюдение 1, Наблюдение 2 и т. д.).
В окно просмотра можно ввести любое выражение. К выражениям применяются те же правила, что и к коду. Поэтому, если вы напишите недопустимое выражение, вы увидите ту же ошибку компилятора.
Чтобы добавить элементы для просмотра, выполните одно из следующих действий:
- Запишите их вручную в новую строку окна просмотра.
- Нажмите правой кнопкой мыши переменную и выберите "Добавить контроль" в контекстном меню.
- Нажмите правой кнопкой мыши переменную во всплывающей подсказке и выберите "Добавить отслеживание".
- Кнопка "Добавить просмотр" в QuickWatch.
Когда использовать окно просмотра:
Несмотря на то, что подсказки по данным и QuickWatch более популярны, окно наблюдения очень полезно, когда вам нужно повторно оценить одни и те же переменные и выражения несколько раз.Это происходит, если вы снова и снова нажимаете одну и ту же точку останова или разные точки останова в одном и том же классе. Наиболее распространен сценарий с точкой останова внутри цикла.
Вы можете использовать окно наблюдения для оценки экземпляра идентификатора объекта, о котором мы говорили в части 1. Здесь вы создаете слабую ссылку на любой объект, который можно оценить из любого места с помощью $1, $2 и т. д.
Правила и поведение окна просмотра
В окне просмотра есть несколько вариантов поведения, правил и функций.
Немедленное окно
Немедленное окно доступно в меню Отладка | Окна | Немедленно или Ctrl + Alt + i. Вы можете ввести любое выражение, и немедленное окно будет оценено. Это похоже на окно просмотра, но больше похоже на окно командной строки в Windows или Linux.
Для меня непосредственное окно всегда было удобнее, чем окна Watch или QuickWatch.
- Как и в интерфейсах командной строки, для вставки предыдущих выражений можно использовать клавиши со стрелками вверх/вниз.
- Чтобы очистить окно, щелкните его правой кнопкой мыши и выберите "Очистить все".
Побочные эффекты в окне просмотра, QuickWatch и Immediate Window
Мы уже видели, что вычисление выражения может вызвать побочные эффекты. Например, рассмотрим этот класс:
Читайте также:
- Компания занимается разработкой компьютерных программ для организации системы бухгалтерского учета
- Как войти в биос на Prestigio
- Напишите программу, определяющую, является ли целое число, введенное с клавиатуры, двузначным целым числом
- Почтовые программы для Linux
- Как сделать обложку для блокнота в фотошопе