Опрос
Вы участвуете в программе Windows Insider?
Популярные новости
Обсуждаемые новости

11.11.2010 13:50 | Dazila

Когда Дейв Соломон (Dave Solomon) и я в 1999 году писали третье издание книги Inside Windows 2000 из серии Windows Internals, мы обдумывали возможность использовать отладчики ядра, такие как Windbg и Kd (часть бесплатного пакета Debugging Tools for Windows, доступного в Windows Platform SDK), для формирования локального интерактивного представления выполняющейся системы. Дейв проводил эксперименты с отладчиками ядра во втором издании, Inside Windows NT, которые укрепляли понимание понятий, описанных в книге. Например, глава об управлении памятью описывала базу данных страничных блоков - структуру данных, используемую системой для отслеживания состояния каждой страницы физической памяти; сопутствующие эксперименты показывали, как просмотреть действительную структуру данных и содержимое записей PFN в выполняющейся системе с помощью отладчика ядра. Однако, в то время единственным способом использовать Windbg и Kd для просмотра информации ядра было подключение второго компьютера с помощью серийного нуль-модемного кабеля к целевой системе, загруженной в режиме отладки. Необходимость покупки специального серийного кабеля и настройки двух систем для отладки ядра означала, что многие читатели просто пропустят эти эксперименты, однако если бы их было проще выполнить, читатели углубили бы свое понимание концепций, описанных в книге.

После некоторых раздумий, я пришел к мысли, что я мог бы обмануть отладчики, заставив их думать, что они смотрят на файл аварийного дампа, реализовав драйвер фильтра файловой системы, который представлял "виртуальные" файлы аварийного дампа, которые могут быть открыты отладчиками. Так как файл аварийного дампа - это просто заголовок файла, сопровождаемый контентом в физической памяти, данный драйвер мог бы удовлетворить запрос на чтение виртуального файла дампа с контентом в физической памяти, которые этот драйвер может легко прочитать из объекта раздела \Device\Physical Memory, создаваемого диспетчером памяти. Несколько недель спустя на свет появилась LiveKd. Мы расширили число экспериментов с отладчиком ядра в книге и начали использовать LiveKd в наших семинарах Windows Internals. Использование LiveKd не ограничивалось лишь образовательными целями и на долгое время эта утилита стала неотъемлемой частью инструментария для диагностики проблем для IT-профессионалов и инженеров поддержки Microsoft. Microsoft даже добавила возможность локальной отладки ядра в Windows XP, однако LiveKd по-прежнему может выполнять некоторые вещи, которые не поддерживаются стандартными средствами, например, сохранение копии состояния системы в файл дампа, который может быть исследован на другой системе, и она работает на Windows Vista/Server 2008 и выше, не требуя при этом загрузки системы в режиме отладки.


Диагностика виртуальных машин
Развитие виртуализации сделала возможным новый сценарий для отладки ядра в реальном времени: диагностика виртуальных машин. Так как LiveKd работает на виртуальной машине так же, как и на родной установке, возможность исследовать выполняющуюся виртуальную машину без установленной и запущенной LiveKd на этой машине упростила бы эту задачу и позволила бы проводить диагностику виртуальной машины, которая не отвечает на запросы или выдает ошибки, которые делают невозможным даже запуск LiveKd. За последние несколько лет я получил много запросов от инженеров поддержки Microsoft касательной этой функции и начала исследование этого подхода, чтобы добавить его поддержку в LiveKd, однако у меня не было достаточно времени, чтобы завершить эту работу.

Несколько месяцев назад, я работал с инструментом LiveCloudKd от Матье Сюиша (Matthieu Suiche), который позволяет делать отладку виртуальной машины Hyper-V, и я обнаружил, что эта технология многим была интересна. Мы были настолько впечатлены, что пригласили Матье поговорить об отладке ядра в реальном времени LiveCloudKd на BlueHat Security Briefings, проходившей в этом году в университетском городке Microsoft. Подгоняемый LiveCloudKd, я решил, что пришло время закончить расширение LiveKd и послал электронное письмо Кену Джонсону (Ken Johnson), ранее известному под ником Skywing на Uninformed.org, а ныне разработчику команде Microsoft, занимающейся продуктами защиты систем (ранее он публиковал статьи об обнаруженных им дыра в безопасности 64-битного ядра Windows "Patchguard", так что мы привлекали его к работе с целью сделать Windows более безопасной), в котором я спросил его, заинтересован ли он в сотрудничестве. До этого Кен написал код для LiveKd, который позволил ей запускаться на 64-битных системах Windows Vista и Windows 7, так что при его поддержке работа над проектом ускорилась бы. Он ответил, что год назад он создал прототип инструмента для отладки виртуальных машин в реальном времени, и он думает, что он мог бы объединить его с LiveKd за несколько дней. Несколько дней спустя бета-версия LiveKd 5.0 была закончена и обладала полной поддержкой отладки Hyper-V в реальном времени.

Инструмент Матье, в свою очередь, обладает некоторыми функциями, не представленными в LiveKd. Например, хотя они оба предназначены для отладки локальных машин, LiveKd предоставляет лишь представление целевой виртуальной машины, доступное только для чтения, тогда как LiveCloudKd также позволяет вносить в нее изменения.


Отладка Hyper-V с помощью LiveKd
Поддержка Hyper-V в LiveKd предоставляет три новых ключа командной строки: -p, -hv и -hvl.


Когда вы хотите провести диагностику виртуальной машины, используйте -hvl для перечисления списка имен и идентификаторов активных виртуальных машин:


Далее используйте ключ -hv для определения той, которую вы хотите исследовать. Вы можете использовать либо GUID, либо имя виртуальной машины, однако обычно удобнее использовать имя, если оно уникально:


Вот и все. Теперь вы можете выполнять те же самые команды, которые вы использовали в LiveKd на родной системе, выводить список процессов и потоков, делать дамп памяти и генерировать файлы аварийного дампа для последующего анализа.

Последний ключ, -p, приостанавливает работу виртуальной машины, оставляя LiveKd подключенным. Обычно LiveKd считывает страницы физической памяти, как они представляются отладчиком, что означает, что различные страницы могут представлять различные временные отрезки. Это может привести к несоответствиям, например, когда вы просматриваете структуру данных на странице и позднее структурные ссылки, вторая структура может быть уже удалена.

Опция приостановки просто автоматизирует операцию паузы, которую вы можете выполнить в интерфейсе управления Hyper-V Virtual Machine, предоставляя вам мгновенное представление виртуальной машины, пока вы разбираетесь в проблеме.

Занимайтесь отладкой виртуальных машин и, пожалуйста, делитесь любыми историями об успешном диагностировании проблем, при которых использовались новые функции LiveKd.


Источник: http://blogs.technet.com/markruss
Перевод: Dazila

Комментарии

Комментариев нет...
Для возможности комментировать войдите в 1 клик через

По теме

Акции MSFT
420.55 0.00
Акции торгуются с 17:30 до 00:00 по Москве
Все права принадлежат © ms insider @thevista.ru, 2022
Сайт является источником уникальной информации о семействе операционных систем Windows и других продуктах Microsoft. Перепечатка материалов возможна только с разрешения редакции.
Работает на WMS 2.34 (Страница создана за 0.047 секунд (Общее время SQL: 0.033 секунд - SQL запросов: 53 - Среднее время SQL: 0.00062 секунд))
Top.Mail.Ru