Отладка (debug) виртуальной машины в Hyper-V

Иногда вам может потребоваться воспользоваться отладчиком на стадии загрузки ОС. Чаще всего это требуется для диагностики ошибок загрузки, написания драйверов и служб, запускающихся в высоких приоритетах. Для физического сервера или персонального компьютера, обычно, при помощи параллельного или последовательного кабеля соединяют два компьютера и отладчиком считывают информацию по ходу загрузки. Как сделать это для виртуальной машины, которая не имеет физического COM или LPT порта? Конечно же, нам помогут именованные каналы Named Pipes!

В первую очередь, вам потребуется установить Debugging Tools for Windows. Проще всего сделать это на хосте виртуализации, что не потребует настройки брэндмауэра и прав удалённого доступа к именованным каналам сервера.

Установив Debugging Tools на хост, вам следует в свойствах выключенной виртуальной машины настроить виртуальный COM порт на использование некого именованного канала. Например, я укажу имя так: \\.\pipe\VM1_pipe

Чтобы соединиться с эти именованным каналом для отладки, включите виртуальную машину, затем в режиме администратора (Elevated) запустите на хосте виртуализации Command Prompt или утилиту kd.exe с указанными ключами:

kd -k com:port=\\.\pipe\VM1_pipe,pipe,resets=0,reconnect

Если вы соединяетесь с другого удалённого компьютера, используйте следующие ключи:

kd -k com:port=\\<HyperV_host_machine>\pipe\VM1_pipe,pipe,resets=0,reconnect , где <HyperV_host_machine> - имя хоста виртуализации.

Для отладки виртуальных машин Hyper-V, Virtual PC или Virtual Server 2005 требуется использование параметра resets=0.

Подсказка: для отладки виртуальных машин на платформах виртуализации других вендоров обычно требуется значение параметра resets=2.