LiveKd для отладки виртуальных машин
Когда Дейв Соломон (
После некоторых раздумий, я пришел к мысли, что я мог бы обмануть отладчики, заставив их думать, что они смотрят на файл аварийного дампа, реализовав драйвер фильтра файловой системы, который представлял "виртуальные" файлы аварийного дампа, которые могут быть открыты отладчиками. Так как файл аварийного дампа - это просто заголовок файла, сопровождаемый контентом в физической памяти, данный драйвер мог бы удовлетворить запрос на чтение виртуального файла дампа с контентом в физической памяти, которые этот драйвер может легко прочитать из объекта раздела \Device\Physical Memory, создаваемого диспетчером памяти. Несколько недель спустя на свет появилась
Диагностика виртуальных машин
Развитие виртуализации сделала возможным новый сценарий для отладки ядра в реальном времени: диагностика виртуальных машин. Так как LiveKd работает на виртуальной машине так же, как и на родной установке, возможность исследовать выполняющуюся виртуальную машину без установленной и запущенной LiveKd на этой машине упростила бы эту задачу и позволила бы проводить диагностику виртуальной машины, которая не отвечает на запросы или выдает ошибки, которые делают невозможным даже запуск LiveKd. За последние несколько лет я получил много запросов от инженеров поддержки Microsoft касательной этой функции и начала исследование этого подхода, чтобы добавить его поддержку в LiveKd, однако у меня не было достаточно времени, чтобы завершить эту работу.
Несколько месяцев назад, я работал с инструментом
Инструмент Матье, в свою очередь, обладает некоторыми функциями, не представленными в LiveKd. Например, хотя они оба предназначены для отладки локальных машин, LiveKd предоставляет лишь представление целевой виртуальной машины, доступное только для чтения, тогда как LiveCloudKd также позволяет вносить в нее изменения.
Отладка Hyper-V с помощью LiveKd
Поддержка Hyper-V в LiveKd предоставляет три новых ключа командной строки: -p, -hv и -hvl.
Когда вы хотите провести диагностику виртуальной машины, используйте -hvl для перечисления списка имен и идентификаторов активных виртуальных машин:
Далее используйте ключ -hv для определения той, которую вы хотите исследовать. Вы можете использовать либо GUID, либо имя виртуальной машины, однако обычно удобнее использовать имя, если оно уникально:
Вот и все. Теперь вы можете выполнять те же самые команды, которые вы использовали в LiveKd на родной системе, выводить список процессов и потоков, делать дамп памяти и генерировать файлы аварийного дампа для последующего анализа.
Последний ключ, -p, приостанавливает работу виртуальной машины, оставляя LiveKd подключенным. Обычно LiveKd считывает страницы физической памяти, как они представляются отладчиком, что означает, что различные страницы могут представлять различные временные отрезки. Это может привести к несоответствиям, например, когда вы просматриваете структуру данных на странице и позднее структурные ссылки, вторая структура может быть уже удалена.
Опция приостановки просто автоматизирует операцию паузы, которую вы можете выполнить в интерфейсе управления Hyper-V Virtual Machine, предоставляя вам мгновенное представление виртуальной машины, пока вы разбираетесь в проблеме.
Занимайтесь отладкой виртуальных машин и, пожалуйста, делитесь любыми историями об успешном диагностировании проблем, при которых использовались новые функции LiveKd.
Источник:
Перевод: Dazila
По теме
- Устраняем конфликт подписей дисков
- Дело о загадочных звуках
- Дело об ооооочень долгом входе в систему
- Дело об ошибке службы установки
- Дело о загадочных перезагрузках
- Дело о зависшей программе запуска игры
- Анализируем вирус Stuxnet с помощью инструментов Sysinternals (ч.3)
- Анализируем вирус Stuxnet с помощью инструментов Sysinternals (ч.2)
- Анализируем вирус Stuxnet с помощью инструментов Sysinternals (ч.1)
- Дело о нерабочей системе