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

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

Открытие окна отслеживания

Чтобы открыть или переключиться в окно "Просмотр", в окне WinDbg в меню "Вид " нажмите кнопку "Смотреть".

Вы также можете нажать клавиши ALT+2 или нажать кнопку "Смотреть" (ALT+2) на панели инструментов: снимок экрана: кнопка

ALT+SHIFT+2 закроет окно наблюдения.

На следующем снимке экрана показан пример окна "Наблюдение".

Снимок экрана: пример окна

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

В окне "Просмотр" можно выполнить следующее:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В окне "Наблюдение" есть панель инструментов, содержащая две кнопки (Typecast и Locations) и контекстное меню с дополнительными командами. Чтобы открыть меню, щелкните правой кнопкой мыши заголовок окна или щелкните значок в правом верхнем углу окна: снимок экрана: значок кнопки для доступа к контекстном меню панели инструментов окна

Панель инструментов и меню содержат следующие кнопки и команды:

  • (Панель инструментов и меню) Typecast включает и отключает отображение столбца Type .

  • (Панель инструментов и меню) Расположения включают и отключают отображение столбца "Расположение ".

  • (Только меню) Отображение 16-разрядных значений в юникоде отображает строки Юникода в этом окне. Эта команда включает и отключает глобальный параметр, влияющий на окно "Локальные", окно "Контроль" и выходные данные команды отладчика. Эта команда эквивалентна использованию команды .enable_unicode (включить отображение Юникода).

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

    Заметка Команда "Всегда отображать числа в радиусе по умолчанию" не влияет на длинные целочисленные значения. Длинные целые числа отображаются в десятичном формате, если не используется команда .enable_long_status (включение длинного целочисленного числа). Команда .enable_long_status влияет на отображение в окне "Локальные", в окне "Наблюдение" и на вывод команд отладчика. Для этой команды нет эквивалента в меню в окне "Контроль".

  • (Только меню) Открытие окна памяти для выбранного значения открывает новое закрепленное окно памяти, которое отображает память, начиная с адреса выбранного выражения.

  • (Только меню) Вызов dt для выбранного значения памяти запускает команду dt (тип отображения) с выбранным символом в качестве параметра. Результат отображается в окне команды отладчика. Параметр -n автоматически используется для отличия символа от шестнадцатеричного адреса. Другие параметры не используются. Обратите внимание, что содержимое, создаваемое с помощью этого меню, идентично содержимому, создаваемому при выполнении команды dt из командной строки, но формат немного отличается.

  • (Только меню) Панель инструментов включает и отключает панель инструментов.

  • (Только меню) Закрепление или Открепление вызывает вход окна в закреплённое состояние или выход из него.

  • (Только меню) Переместить на новую панель закрывает окно "Наблюдение" и открывает его на новой панели.

  • (Только меню) Установка целевого объекта tab-dock для типа окна недоступна для окна "Контроль". Этот параметр доступен только для окон источника или памяти .

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

  • (Только в меню) Перемещение вместе с рамкой приводит к перемещению окна при перемещении фрейма WinDbg, даже если окно откреплено.

  • (Только меню) Справка открывает эту тему в документации по средствам отладки для Windows.

  • (Только меню) Закрывает это окно.

См. также

Дополнительные сведения об управлении переменными и описанием других команд, связанных с памятью, см. в разделе "Чтение и запись памяти". Дополнительные сведения о регистрах и их манипуляциях см. в разделе "Просмотр и редактирование регистров" в WinDbg (классическая модель).