Вы отлаживаете исполняемый файл. Это означает, что вы отлаживаете пользовательский режим. Если посмотреть на приложение в пользовательском режиме, вы увидите только виртуальную память. Отладчик представит вам тот же вид, что и приложение/исполняемый файл.
Виртуальная память предоставляется приложению по-разному. Это может быть физическая память, содержимое файла страницы или даже ничего (для зарезервированной памяти).
Независимо от того, что находится на самом деле, это скрыто от приложения. Это то, что делает ядро для вас. Чтобы узнать, как это сделать, вам нужно использовать отладку ядра. Затем отладчик позволит вам увидеть, что ОС видит внутри, и разрешить использование связанных с ядром команд, таких как !pte
(и многие другие).
PTE (запись в таблице страниц) и PDE (запись в каталоге страниц) - это именно те «объекты», которые использует ядро для сопоставления между виртуальной памятью и физической памятью.
Чтобы проанализировать это, вы, вероятно, захотите выполнить отладку ядра и отладку пользовательского режима в одно и то же время, чтобы убедиться, что результаты, полученные на стороне ядра, действительно соответствуют результатам, которые вы получаете в режиме пользователя.
Поскольку кажется, что вы новичок в этой теме, я бы предложил сделать это на виртуальной машине или на выделенном ПК. Не используйте ПК с важными данными. В режиме ядра вы можете вызвать синие экраны и потерять всю несохраненную работу.
Есть статьи из отладочного блога NT, такие как Understanding !pte - Part 1 - Let's get physical, с которого вы начали, а затем Part 2 - Flags and Large Pages и Part 3 - Non-PAE and X64.
Спасибо. Вы имеете в виду, что лучше отлаживать с другого компьютера? –
Нет. Это означает, что '! Pte', вероятно, не имеет отношения к проблеме, которую вы пытаетесь решить. Ваш вопрос аналогичен запросу «Я выполняю пользовательский режим-отладки, но ['! Idt'] (https://msdn.microsoft.com/en-us/library/windows/hardware/ff563219 (v = vs. 85) .aspx) для отображения прерываний не работает! Должен ли я использовать два компьютера? " Нет. Эта команда не имеет ничего общего с отладкой в режиме пользователя. – conio
Почему вы думаете, что '! Pte' было бы полезно? Какие еще команды вы использовали до сих пор? Какую проблему ты пытаешься решить? Почему вы отлаживаете исполняемый файл? Это крушение? WinDbg содержит сотни команд. Почему вы выбрали этот вариант для отладки? –