Udostępnij za pośrednictwem


Konfigurowanie debugowania Kernel-Mode w maszynie wirtualnej ręcznie za pomocą wirtualnego portu COM

Narzędzia debugowania dla systemu Windows obsługują debugowanie jądra maszyny wirtualnej. Maszyna wirtualna może znajdować się na tym samym komputerze fizycznym co debuger lub na innym komputerze podłączonym do tej samej sieci. W tym temacie opisano sposób ręcznego konfigurowania debugowania maszyny wirtualnej przy użyciu wirtualnego portu COM za pośrednictwem programu KDCOM.

Korzystanie z sieci wirtualnej KDNET jest szybszą opcją i jest zalecane. Aby uzyskać więcej informacji, zobacz Konfigurowanie debugowania sieci maszyny wirtualnej przy użyciuKDNET.

Konfigurowanie docelowej maszyny wirtualnej

Komputer z uruchomionym debugerem jest nazywany komputerem hosta , a debugowana maszyna wirtualna jest nazywana docelową maszyną wirtualną .

Ważny

Przed użyciem bcDEdit do zmiany informacji rozruchowych może być konieczne tymczasowe zawieszenie funkcji zabezpieczeń systemu Windows, takich jak BitLocker i Bezpieczny rozruch na komputerze testowym. Włącz ponownie te funkcje zabezpieczeń podczas testowania i odpowiednio zarządzaj komputerem testowym, gdy funkcje zabezpieczeń są wyłączone.

  1. Na maszynie wirtualnej w oknie wiersza polecenia z podwyższonym poziomem uprawnień wprowadź następujące polecenia.

    bcdedit /debug on

    bcdedit /dbgsettings serial debugport:nbaudrate:115200

    gdzie n jest liczbą portu COM na maszynie wirtualnej.

  2. Na maszynie wirtualnej skonfiguruj port COM, aby mapował na nazwany potok. Debuger połączy się za pośrednictwem tego potoku. Aby uzyskać więcej informacji na temat tworzenia tej rury, zobacz dokumentację maszyny wirtualnej.

  3. Uruchom debuger w trybie podwyższonego poziomu uprawnień, na przykład w wierszu polecenia administratora. Debugger musi być uruchomiony w trybie administracyjnym podczas debugowania maszyny wirtualnej za pośrednictwem kanału szeregowego. Po dołączeniu i uruchomieniu debugera uruchom ponownie docelową maszynę wirtualną.

Uruchamianie sesji debugowania przy użyciu windbg

Na komputerze-hoście otwórz windbg jako administrator. Debuger musi być uruchomiony w trybie podwyższonego poziomu uprawnień podczas debugowania maszyny wirtualnej za pośrednictwem potoku szeregowego. W menu Plik wybierz pozycję Debugowanie jądra. W oknie dialogowym Debugowanie jądra otwórz kartę COM. Zaznacz pole potoku i zaznacz pole Połącz ponownie . Dla prędkości transmisjiwprowadź 115200. Aby zresetować do, wprowadź 0.

Jeśli debuger jest uruchomiony na tym samym komputerze co maszyna wirtualna, wprowadź następujące polecenie w polu Port.

\\.\pipe\PipeName.

Jeśli debuger jest uruchomiony na innym komputerze niż maszyna wirtualna, wprowadź następujące polecenie w polu Port.

\\ VMHost\pipe\PipeName

Wybierz pozycję OK.

Możesz również uruchomić WinDbg za pomocą wiersza poleceń. Jeśli debuger jest uruchomiony na tym samym komputerze fizycznym co maszyna wirtualna, wprowadź następujące polecenie w oknie wiersza polecenia.

windbg -k com:pipe,port=\\.\pipe\PipeName,resets=0,reconnect

Jeśli debuger jest uruchomiony na innym komputerze fizycznym z maszyny wirtualnej, wprowadź następujące polecenie w oknie wiersza polecenia.

windbg -k com:pipe,port=\\VMHost\pipe\PipeName,resets=0,ponownie połącz

Uruchamianie sesji debugowania przy użyciu KD

Aby debugować maszynę wirtualną uruchomioną na tym samym komputerze fizycznym co debuger, wprowadź następujące polecenie w oknie wiersza polecenia z podwyższonym poziomem uprawnień .

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

Aby debugować maszynę wirtualną uruchomioną na innym komputerze fizycznym z debugera, wprowadź następujące polecenie w oknie wiersza polecenia.

kd -k com:pipe,port=\\VMHost\pipe\PipeName,resets=0,reconnect

Parametry

VMHost
Określa nazwę komputera, na którym jest uruchomiona maszyna wirtualna.

nazwa rurociągu
Określa nazwę potoku utworzonego na maszynie wirtualnej.

resets=0
Określa, że nieograniczona liczba pakietów resetujących może być wysyłana do celu, gdy host i cel są synchronizowane. Użyj parametru resets=0 dla programu Microsoft Virtual PC i innych maszyn wirtualnych, których potoki upuszczają nadmiar bajtów. Nie należy używać tego parametru dla VMware lub innych maszyn wirtualnych, których kanały nie likwidują wszystkich nadmiarowych bajtów.

ponownie połączyć
Powoduje, że debuger automatycznie rozłącza się i ponownie nawiązuje połączenie z potokiem, jeśli wystąpi awaria odczytu/zapisu. Ponadto, jeśli debuger nie znajdzie nazwanego potoku podczas uruchamiania, parametr ponownego połączenia powoduje, że debuger czeka na pojawienie się potoku o nazwie PipeName. Użyj ponowne połączenie dla maszyn wirtualnych, np. Virtual PC, oraz innych maszyn wirtualnych, które niszczą, i ponownie tworzą swoje kanały podczas restartu komputera. Nie używaj tego parametru dla VMware ani innych maszyn wirtualnych, które zachowują swoje kanały podczas ponownego uruchamiania komputera.

Aby uzyskać więcej informacji na temat dodatkowych opcji wiersza polecenia, zobacz opcje KD Command-Line lub opcje WinDbg Command-Line.

Maszyny wirtualne generacji 2

Domyślnie porty COM nie są prezentowane na maszynach wirtualnych generacji 2. Porty COM można dodawać za pomocą programu PowerShell lub usługi WMI. Aby porty COM były wyświetlane w konsoli programu Hyper-V Manager, należy je utworzyć przy użyciu ścieżki.

Aby włączyć debugowanie jądra przy użyciu portu COM na maszynie wirtualnej generacji 2, wykonaj następujące kroki:

  1. Wyłącz bezpieczny rozruch, wprowadzając następujące polecenie programu PowerShell:

    Set-VMFirmware — vmnameVmName–EnableSecureBoot Off

    gdzie VmName jest nazwą maszyny wirtualnej.

  2. Dodaj port COM do maszyny wirtualnej, wprowadzając następujące polecenie programu PowerShell:

    Set-VMComPort —VMNameVmName1 \\.\pipe\PipeName

    Na przykład następujące polecenie konfiguruje pierwszy port COM na maszynie wirtualnej TestVM, aby nawiązać połączenie z nazwanym potokiem TestPipe na komputerze lokalnym.

    Set-VMComPort –VMName TestVM 1 \\.\pipe\TestPipe

  3. Po dołączeniu i uruchomieniu debugera zatrzymaj maszynę wirtualną i uruchom ją na zimno, aby aktywować porty COM na maszynie wirtualnej. Emulowane UART są niedostępne do debugowania, chyba że co najmniej jeden jest skonfigurowany z nazwą kanału i nie mogą być dodawane dynamicznie.

  4. Ponownie włącz bezpieczny rozruch po zakończeniu aktualizowania zmian konfiguracji.

Aby uzyskać więcej informacji na temat maszyn wirtualnych generacji 2, zobacz Generation 2 Virtual Machine Overview (Omówienie maszyn wirtualnych 2. generacji 2).

Uwagi

Jeśli komputer docelowy przestał odpowiadać, jest nadal zatrzymany z powodu wcześniejszej akcji debugowania jądra lub jeśli użyto opcji wiersza polecenia -b, debuger natychmiast przerwie działanie w komputerze docelowym.

W przeciwnym razie komputer docelowy będzie działać, dopóki debuger nie zamówi jego przerwania.

Rozwiązywanie problemów z zaporami i dostępem do sieci

Debuger (WinDbg lub KD) musi mieć dostęp przez zaporę. Może się to zdarzyć nawet w przypadku wirtualnych portów szeregowych obsługiwanych przez karty sieciowe.

Jeśli zostanie wyświetlony monit systemu Windows o wyłączenie zapory po załadowaniu debugera, zaznacz wszystkie trzy pola.

W zależności od specyfiki używanej maszyny wirtualnej może być konieczne zmianę ustawień sieci dla maszyn wirtualnych, aby połączyć je z kartą debugowania sieci jądra firmy Microsoft. W przeciwnym razie maszyny wirtualne nie będą miały dostępu do sieci.

Zapora systemu Windows

Możesz użyć Panelu sterowania, aby zezwolić na dostęp za pośrednictwem zapory systemu Windows. Otwórz Panel sterowania > System i zabezpieczenia, a następnie wybierz opcję Zezwalanie na działanie aplikacji przez Zaporę systemu Windows. Na liście aplikacji znajdź debuger symboliczny interfejsu użytkownika systemu Windows i Debuger jądra systemu Windows. Użyj pól wyboru, aby umożliwić tym dwóm aplikacjom działanie przez zaporę sieciową. Uruchom ponownie aplikację debugowania (WinDbg lub KD).

Maszyny wirtualne innych firm

Oprogramowanie VMWare

Jeśli uruchomisz ponownie maszynę wirtualną przy użyciu obiektów VMWare (na przykład przycisku resetowania), zamknij usługę WinDbg, a następnie uruchom ponownie usługę WinDbg, aby kontynuować debugowanie. Podczas debugowania maszyny wirtualnej VMWare często zużywa 100% mocy procesora.

Zobacz też

konfigurowanie debugowania sieci maszyny wirtualnej przy użyciu KDNET

Konfigurowanie debugowania ręcznie Kernel-Mode

Konfigurowanie debugowania sieci dla hosta maszyny wirtualnej