Поделиться через


Использование окна контрольных значений — WinDbg (классическая модель)

В окне Контрольные значения отображаются сведения о глобальных переменных, локальных переменных и регистрах. Это окно можно настроить для отображения отслеживаемых элементов.

Открытие окна контрольных значений

Чтобы открыть окно Контрольные значения или переключиться в его окно, в окне WinDbg в меню Вид выберите пункт Контрольные значения.

Вы также можете нажать клавиши ALT+2 или кнопку Контрольные значения (ALT+2) на панели инструментов: снимок экрана: кнопка Контрольные значения на панели инструментов.

ALT+SHIFT+2 закроет окно Контрольные значения.

На следующем снимке экрана показан пример окна контрольных значений.

Снимок экрана: пример окна контрольных значений в WinDbg.

Окно Контрольные значения может содержать четыре столбца. Столбцы Name и Value всегда отображаются, а столбцы Тип и Расположение являются необязательными. Чтобы отобразить столбцы Тип и Расположение , нажмите кнопки Typecast и Locations соответственно на панели инструментов.

В окне Контрольные значения можно сделать следующее:

  • Чтобы добавить переменную в окно Контрольные значения, выделите первую пустую ячейку в столбце Имя , введите имя переменной и нажмите клавишу ВВОД. Отделить имя модуля от переменной с помощью восклицательного знака (!). Если модуль не указан, используется текущий модуль. Чтобы ввести адрес в поле Имя , адрес должен начинаться с десятичной цифры (при необходимости используйте префикс 0x).

    Если введенное имя переменной определено в область текущей функции, ее значение отображается в столбце Значение. Если он не определен, в столбце Значениеотображается сообщение "Ошибка: не удается получить значение".

    Даже если переменная не определена, ее можно добавить в окно Контрольные значения. Если счетчик программы вводит функцию, в которой определена переменная с этим именем, ее значение отображается в окне в это время.

  • Чтобы удалить переменную из окна Контрольные значения, дважды щелкните ее имя, нажмите клавишу DELETE, а затем нажмите клавишу ВВОД. Вы также можете заменить старое имя новым, дважды щелкнув старое имя, введя новое имя и нажав клавишу ВВОД.

  • Если переменная является структурой данных, рядом с ее именем появится поле проверка. Чтобы развернуть и свернуть отображение элементов структуры, выберите или снимите флажок проверка.

  • Целые числа типа int отображаются в виде десятичных значений; в текущем радиксе отображаются целые числа типа UINT . Чтобы изменить текущий радикс, используйте команду n (Задать числовую базу) в окне Команда отладчика.

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

    Целые числа типа int отображаются в виде десятичных значений; в текущем радиксе отображаются целые числа типа UINT . Чтобы изменить текущий радикс, используйте команду n (Задать числовую базу) в окне Команда отладчика.

  • В столбце Тип (если он отображается в окне Контрольные значения) отображается текущий тип данных каждой переменной. Каждая переменная отображается в формате, соответствующем ее собственному типу данных. Структуры данных имеют имена типов в столбце Тип . В этом столбце для других типов переменных отображается сообщение "Введите новый тип".

    Если дважды щелкнуть "Ввести новый тип", можно привести тип, введя новый тип данных. Это приведение изменяет текущее отображение этой переменной только в окне Контрольные значения; он не изменяет ничего в отладчике или на целевом компьютере. Кроме того, если ввести новое значение в столбце Значение , введенный текст будет анализироваться на основе фактического типа символа, а не любого нового типа, введенного в столбце Тип . Если закрыть и снова открыть окно Контрольные значения, вы потеряете изменения типа данных.

    Вы также можете ввести команду расширения в столбце Тип . Отладчик передаст адрес символа этому расширению и отобразит результирующие выходные данные в последовательности свертываемых строк под текущей строкой. Например, если символ в этой строке является допустимым адресом для блока среды потока, можно ввести !teb в столбце Тип , чтобы запустить расширение !teb по адресу этого символа.

  • Столбец Расположение (если он отображается в окне Контрольные значения) показывает смещение каждого элемента структуры данных.

  • Помимо переменных, в окне Контрольные значения также можно отслеживать следующие элементы:

    • Регистров. При добавлении регистра в окно Контрольные значения введите в его имя префикс со знаком at (@). В отличие от переменных, регистровые значения нельзя изменять в окне Контрольные значения.
    • Vtables, содержащие указатели функций. Когда виртуальная таблица отображается в окне Контрольные значения, вы можете просматривать записи функций в таблице. Если vtable содержится в базовом классе, который указывает на производную реализацию, отображается нотация _vtcast_Class для указания членов, добавляемых из производного класса. Эти члены расширяются как производный тип класса.
    • Возвращаемые значения функций расширения, например _EFN_GetPoolData.

В отличие от окна Локальные значения, на окно Контрольные значения не влияют изменения контекста регистра. В окне Контрольные значения можно просматривать и изменять только те переменные, которые определены в область текущего счетчика программы.

Если открыть новую рабочую область, содержимое окна Контрольные значения будет удалено и заменено на содержимое в новой рабочей области.

Панель инструментов и контекстное меню

В окне Контрольные значения есть панель инструментов, содержащая две кнопки (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 (классическая модель).