Просмотр и изменение локальных переменных в WinDbg (классическая модель)
В WinDbg можно просматривать локальные переменные, вводя команды, используя окно Локальные или контрольные значения.
Окно командной строки отладчика
Локальные переменные и параметры можно просмотреть, введя команду DV или команду dt в окне Команда отладчика.
Открытие окна "Локальные"
В окне Локальные отображаются сведения обо всех локальных переменных в текущем область.
Чтобы открыть или переключиться в окно Локальные, в окне WinDbg в меню Вид выберите Локальные. (Можно также нажать клавиши ALT+3 или нажать кнопку Локальные на панели инструментов. ALT+SHIFT+3 закрывает окно Локальные.)
На следующем снимке экрана показан пример окна Локальные.
Окно Локальные может содержать четыре столбца. Столбцы Name и Value всегда отображаются, а столбцы Тип и Расположение являются необязательными. Чтобы отобразить столбцы Тип и Расположение , нажмите кнопки Typecast и Locations соответственно на панели инструментов.
Использование окна "Локальные"
В окне Локальные можно сделать следующее:
В столбце Имя отображается имя каждой локальной переменной. Если переменная является структурой данных, рядом с ее именем появится поле проверка. Чтобы развернуть или свернуть отображение элементов структуры, выберите или снимите флажок проверка.
В столбце Значение отображается текущее значение каждой переменной.
- Чтобы ввести новое значение для переменной, дважды щелкните текущее значение и введите новое значение или измените старое значение. (Команды вырезать, копировать и вставлять доступны для редактирования.) Можно ввести любое выражение C++.
- Чтобы сохранить новое значение, нажмите клавишу ВВОД.
- Чтобы отменить новое значение, нажмите клавишу ESC.
- Если ввести недопустимое значение, старое значение снова появится при нажатии клавиши ВВОД.
Целые числа типа int отображаются в виде десятичных значений; в текущем радиксе отображаются целые числа типа UINT . Чтобы изменить текущий радикс, используйте команду n (Задать числовую базу) в окне Команда отладчика.
В столбце Тип (если он отображается в окне Локальные) отображается текущий тип данных каждой переменной. Каждая переменная отображается в формате, соответствующем ее собственному типу данных. Структуры данных имеют имена типов в столбце Тип . В этом столбце для других типов переменных отображается сообщение "Введите новый тип".
Если дважды щелкнуть "Ввести новый тип", можно привести тип, введя новый тип данных. Это приведение изменяет текущее отображение этой переменной только в окне Локальные; он не изменяет ничего в отладчике или на целевом компьютере. Кроме того, если ввести новое значение в столбце Значение , введенный текст будет анализироваться на основе фактического типа символа, а не любого нового типа, введенного в столбце Тип . При закрытии и повторном открытии окна Локальные изменения типов данных будут потеряны.
Вы также можете ввести команду расширения в столбце Тип . Отладчик передаст адрес символа этому расширению и отобразит результирующие выходные данные в последовательности свертываемых строк под текущей строкой. Например, если символ в этой строке является допустимым адресом для блока среды потока, можно ввести !teb в столбце Тип , чтобы запустить расширение !teb по адресу этого символа.
В столбце Расположение (если он отображается в окне Локальные) отображается смещение каждого элемента структуры данных.
Если локальная переменная является экземпляром класса, содержащего Vtables, в столбце Имя отображаются Vtables и можно развернуть их, чтобы отобразить указатели функций. Если vtable содержится в базовом классе, который указывает на производную реализацию, отображается _vtcast_Class нотации для указания членов, добавляемых из производного класса. Эти члены расширяются как производный тип класса.
Локальный контекст определяет, какой набор локальных переменных будет отображаться в окне Локальные. При изменении локального контекста по какой-либо причине окно Локальные автоматически обновляется. По умолчанию локальный контекст соответствует текущей позиции счетчика программы. Дополнительные сведения об изменении локального контекста см. в разделе Локальный контекст.
В окне Локальные есть панель инструментов, содержащая две кнопки (Typecast и Locations) и контекстное меню с дополнительными командами. Чтобы открыть меню, выберите и удерживайте (или щелкните правой кнопкой мыши) строку заголовка окна или щелкните значок в правом верхнем углу окна. Панель инструментов и меню содержат следующие кнопки и команды.
(Панель инструментов и меню) Typecast включает и отключает отображение столбца Тип .
(Панель инструментов и меню) Расположение включает и отключает отображение столбца Расположение .
(Только меню) Отображение 16-разрядных значений в юникоде отображает строки Юникода в этом окне. Эта команда включает и отключает глобальный параметр, который влияет на окно Локальные, Окно Контрольные значения и выходные данные команды отладчика. Эта команда эквивалентна использованию команды .enable_unicode (Включить отображение Юникода).
(Только меню) Всегда отображать числа в радиксе по умолчанию приводит к отображению целых чисел в радиксе по умолчанию, а не в десятичном формате. Эта команда включает и отключает глобальный параметр, который влияет на окно Локальные, Окно Контрольные значения и выходные данные команды отладчика. Эта команда эквивалентна использованию команды .force_radix_output (Use Radix for Integers).
Примечание Команда Всегда отображать числа в радиксе по умолчанию не влияет на длинные целые числа. Длинные целые числа отображаются в десятичном формате, если не задана команда .enable_long_status (Enable Long Integer Display). Команда .enable_long_status влияет на отображение в окне Локальные, Контрольное значение и в выходных данных команды отладчика; для этой команды нет эквивалента в меню в окне Локальные.
(Только меню) Открыть окно памяти для выбранного значения открывает новое закрепленное окно Память, в котором отображается память, начиная с адреса выбранного выражения.
(Только меню) Вызов dt для выбранного значения памяти выполняет команду dt (тип отображения) с выбранным символом в качестве параметра. Результат появится в окне Команда отладчика. Параметр -n автоматически используется для отличия символа от шестнадцатеричного адреса. Другие параметры не используются. Обратите внимание, что содержимое, созданное с помощью этого меню, идентично содержимому, созданному при выполнении команды dt из командной строки, но формат немного отличается.
(Только меню) Панель инструментов включает и отключает панель инструментов.
(Только меню) Закрепление или открепка приводит к тому, что окно переходит в закрепленное состояние или выходит из нее.
(Только меню) Перемещение на новую док-станцию закрывает окно Локальные и открывает его в новой док-станции.
(Только меню) Установка в качестве целевого объекта табуляции для типа окна недоступна для окна Локальные. Этот параметр доступен только для окон "Источник" или "Память".
(Только меню) Всегда плавающий режим приводит к тому, что окно остается отстыкованным, даже если оно перетаскивается в место закрепления.
(Только меню) Перемещение с помощью фрейма приводит к перемещению окна при перемещении кадра WinDbg, даже если окно отстыковывается.
(Только меню) Справка открывает этот раздел в документации по средствам отладки для Windows.
(Только меню) Закрытие закрывает это окно.
Окно контрольных значений
В WinDbg можно использовать окно Контрольные значения для отображения и изменения локальных переменных. В окне Контрольные значения можно отобразить любой список переменных. Эти переменные могут включать глобальные и локальные переменные из любой функции. В любое время в окне Контрольные значения отображаются значения переменных, соответствующих область текущей функции. Вы также можете изменить значения этих переменных в окне Контрольные значения.
В отличие от окна Локальные значения, на окно Контрольные значения не влияют изменения локального контекста. Только те переменные, которые определены в область текущего счетчика программы, могут отображать или изменять свои значения.
Чтобы открыть окно Контрольные значения, выберите Контрольные значения в меню Вид . Вы также можете нажать клавиши ALT+2 или нажать кнопку Смотреть на панели инструментов. ALT+SHIFT+2 закрывает окно Контрольные значения.
На следующем снимке экрана показан пример окна контрольных значений.
Окно Контрольные значения может содержать четыре столбца. Столбцы Name и Value всегда отображаются, а столбцы Тип и Расположение являются необязательными. Чтобы отобразить столбцы Тип и Расположение , нажмите кнопки Typecast и Locations соответственно на панели инструментов.
См. также раздел
Дополнительные сведения об управлении локальными переменными, общие сведения об использовании переменных и изменении область, а также описание других команд, связанных с памятью, см. в разделе Чтение и запись памяти.