Доступ к памяти по виртуальному адресу
Для доступа к адресам памяти или диапазонам адресов можно использовать несколько команд. Visual Studio и WinDbg предоставляют элементы пользовательского интерфейса (а также команды), которые можно использовать для просмотра и редактирования памяти. Дополнительные сведения см. в разделе Просмотр и редактирование памяти в WinDbg (классическая модель).
Следующие команды могут считывать или записывать память в различных форматах. К этим форматам относятся шестнадцатеричные байты, слова (слова, двойные и четырехсловные), целые числа (короткие, длинные и четырехзначные целые числа и целые числа без знака), числа с плавающей запятой (10-байтовые, 16-байтовые, 32-байтовые и 64-байтовые вещественные числа) и символы ASCII.
Команда d* (display Memory) отображает содержимое указанного адреса или диапазона памяти.
Команда e* (Ввод значений) записывает значение в указанный адрес памяти.
Для обработки более специализированных типов данных можно использовать следующие команды:
Команда dt (Тип отображения) находит различные типы данных и отображает структуры данных, созданные отлаживаемым приложением. Эта команда очень универсальна и имеет множество вариантов и вариантов.
Команда ds, dS (Display String) отображает структуру данных STRING, ANSI_STRING или UNICODE_STRING.
Команда dl (Отображение связанного списка) выполняет трассировку и отображает связанный список.
Команда d*s (Отображение слов и символов) находит двойные или четырехсловные слова, которые могут содержать сведения о символах, а затем отображает данные и сведения о символах.
Команда расширения !address отображает сведения о свойствах памяти, расположенной по определенному адресу.
Для управления диапазонами памяти можно использовать следующие команды:
Команда m (Переместить память) перемещает содержимое одного диапазона памяти в другой.
Команда f (Заполнение памяти) записывает шаблон в диапазон памяти, повторяя его до тех пор, пока диапазон не будет заполнен.
Команда c (Сравнить память) сравнивает содержимое двух диапазонов памяти.
Команда s (Search Memory) ищет указанный шаблон в диапазоне памяти или ищет все символы ASCII или Юникода, существующие в диапазоне памяти.
Команда .holdmem (Удержание и сравнение памяти) сравнивает один диапазон памяти с другим.
В большинстве случаев эти команды интерпретируют свои параметры в текущем радиксе. Поэтому следует добавить 0x перед шестнадцатеричными адресами, если текущий радикс не равен 16. Однако выходные данные этих команд обычно отображаются в шестнадцатеричном формате независимо от текущего радикса. (Дополнительные сведения о выходных данных см. в разделах об отдельных командах.) В окне Память отображаются целые числа и реальные числа в десятичном формате, а другие — в шестнадцатеричном формате.
Чтобы изменить радикс по умолчанию, используйте команду n (задать числовую базу). Чтобы быстро преобразовать числа из одной базы в другую, используйте ? (Вычисление выражения) команда или команда .formats (Show Number Formats).
При отладке в пользовательском режиме значение виртуальных адресов определяется текущим процессом. При отладке в режиме ядра отладчик может управлять значением виртуальных адресов. Дополнительные сведения см. в разделе Контекст процесса.