Просмотр и редактирование регистров в WinDbg (классическая модель)
Регистры — это небольшие энергонезависимые единицы памяти, расположенные на ЦП. Многие регистры предназначены для конкретных применений, а другие регистры доступны для приложений в пользовательском режиме. Процессоры на базе x86 и x64 имеют разные коллекции регистров. Дополнительные сведения о регистрах на каждом процессоре см. в разделе Архитектура процессора.
В WinDbg регистры можно просматривать и изменять, вводя команды, используя окно Регистры или окно контрольных значений.
Команды
Чтобы просмотреть и изменить регистры, введите команду r (Registers) в окне Команда отладчика. Вы можете настроить дисплей с помощью нескольких параметров или с помощью команды rm (Register Mask).
Регистры также автоматически отображаются при каждой остановке целевого объекта. Если вы выполняете пошаговое выполнение кода с помощью команд p (шаг) или t (трассировка), на каждом шаге отображается регистр. Чтобы остановить это отображение, используйте параметр r при использовании этих команд.
На процессоре на базе x86 параметр r также управляет несколькими однобитными регистрами, известными как флаги. Чтобы изменить эти флаги, используется синтаксис, немного отличающийся от синтаксиса при изменении обычных регистров. Дополнительные сведения об этих флагах и объяснение этого синтаксиса см. в разделе Флаги x86.
Окно "Регистры"
Открытие окна регистров
Чтобы открыть окно Регистры или переключиться в его окно, выберите в меню Видпункт Регистры. (Можно также нажать клавиши ALT+4 или нажать кнопку Регистры на панели инструментов. ALT+SHIFT+4 закрывает окно Регистры.)
На следующем снимке экрана показан пример окна Регистры.
Окно Регистры содержит два столбца. В столбце Reg перечислены все регистры для целевого процессора. В столбце Значение отображается текущее значение каждого регистра. Это окно также содержит кнопку Настроить на панели инструментов, которая открывает диалоговое окно Настройка списка регистрации .
Использование окна "Регистры"
В окне Регистры можно сделать следующее:
В столбце Значение отображается текущее значение каждого регистра. Значение последнего измененного регистра отображается красным текстом.
- Чтобы ввести новое значение, дважды щелкните ячейку Значение , а затем введите новое значение или измените старое значение. (Команды вырезать, копировать и вставлять доступны для редактирования.)
- Чтобы сохранить новое значение, нажмите клавишу ВВОД.
- Чтобы отменить новое значение, нажмите клавишу ESC.
- Если ввести недопустимое значение, старое значение снова появится при нажатии клавиши ВВОД.
Регистровые значения отображаются в текущем радиксе, и необходимо ввести новые значения в том же радиксе. Чтобы изменить текущий радикс, используйте команду n (Задать числовую базу) в окне Команда отладчика.
В пользовательском режиме в окне Регистры отображаются регистры, связанные с текущим потоком. Дополнительные сведения о текущем потоке см. в разделе Управление процессами и потоками.
В режиме ядра в окне Регистры отображаются регистры, связанные с текущим контекстом регистра. Контекст регистра можно задать в соответствии с конкретным потоком, записью контекста или кадром ловушки. Фактически отображаются только наиболее важные регистры для указанного контекста регистра; вы не можете изменить их значения.
Окно Регистры содержит панель инструментов, содержащую кнопку "Настроить", и контекстное меню с дополнительными командами. Чтобы открыть меню, выберите и удерживайте (щелкните правой кнопкой мыши) строку заголовка или щелкните значок в правом верхнем углу окна (
(Панель инструментов и меню) Откроется диалоговое окно Настройка списка регистрации , описанное в следующем разделе этого раздела.
(Только меню) Панель инструментов включает и отключает панель инструментов.
(Только меню) Закрепление или открепка приводит к тому, что окно переходит в закрепленное состояние или выходит из нее.
(Только меню) При переходе на новую док-станцию окно Регистры закрывается и открывается в новой док-станции.
(Только меню) Установка в качестве целевого объекта табуляции для типа окна недоступна для окна Регистры. Этот параметр доступен только для окон "Источник" или "Память".
(Только меню) Всегда плавающий режим приводит к тому, что окно остается отстыкованным, даже если оно перетаскивается в место закрепления.
(Только меню) Перемещение с помощью фрейма приводит к перемещению окна при перемещении кадра WinDbg, даже если окно отстыковывается.
(Только меню) Справка открывает этот раздел в документации по средствам отладки для Windows.
(Только меню) Закрытие закрывает это окно.
Диалоговое окно "Настройка списка регистрации"
Чтобы изменить список отображаемых регистров, нажмите кнопку Настроить . Откроется диалоговое окно Настройка списка регистрации .
В этом диалоговом окне можно изменить список регистров, чтобы изменить порядок отображения регистров. (Фактически невозможно удалить регистр из списка. В этом случае он снова появится в конце.) Между именами регистров должно быть пробел.
Если выбрать поле Отображать измененные значения регистра проверка, в верхней части появится регистр, значения которого были изменены совсем недавно.
Если установить флажок Не отображать подрегистры проверка, подрегистры не отображаются. Например, будет отображаться eax , но не ax, ah или al.
Нажмите кнопку ОК , чтобы сохранить изменения, или Отмена , чтобы отменить изменения.
При отладке многопроцессорного компьютера с несколькими типами процессоров WinDbg сохраняет параметры настройки для каждого типа процессора отдельно. Это разделение позволяет одновременно настраивать отображение регистров каждого процессора.
Окно контрольных значений
В WinDbg можно использовать окно Контрольные значения для отображения регистров. Окно Контрольные значения нельзя использовать для изменения значений регистров.
Чтобы открыть окно Контрольные значения, выберите Контрольные значения в меню Вид . Вы также можете нажать клавиши ALT+2 или нажать кнопку Смотреть на панели инструментов
На следующем снимке экрана показан пример окна контрольных значений.
См. также раздел
Дополнительные сведения о контексте регистрации и других параметрах контекста см. в разделе Изменение контекстов.