Configuration du débogage du noyau d’une machine virtuelle manuellement à l’aide d’un port COM virtuel
Les outils de débogage pour Windows prennent en charge le débogage du noyau d’une machine virtuelle. La machine virtuelle peut se trouver sur le même ordinateur physique que le débogueur ou sur un autre ordinateur connecté au même réseau. Cette rubrique explique comment configurer le débogage d’une machine virtuelle manuellement à l’aide d’un port COM virtuel via KDCOM.
L’utilisation de la mise en réseau virtuel KDNET est une option plus rapide et est recommandée. Pour plus d’informations, consultez Configuration du débogage réseau d’une machine virtuelle avec KDNET.
Configuration de la machine virtuelle cible
L’ordinateur qui exécute le débogueur est appelé l’ordinateur hôte, et la machine virtuelle en cours de débogage est appelée machine virtuelle cible.
Important
Avant d’utiliser BCDEdit pour modifier les informations de démarrage, vous devrez peut-être suspendre temporairement les fonctionnalités de sécurité de Windows telles que BitLocker et Secure Boot sur le PC de test. Réactivez ces fonctionnalités de sécurité lorsque les tests sont terminés et gérez de manière appropriée le PC de test lorsque ces fonctionnalités de sécurité sont désactivées.
Dans la machine virtuelle, dans une fenêtre d’invite de commandes avec élévation de privilèges, entrez les commandes suivantes.
bcdedit /debug on
bcdedit /dbgsettings serial debugport :n baudrate :115200
où n correspond au nombre d’un port COM sur la machine virtuelle.
Dans la machine virtuelle, configurez le port COM pour mapper à un canal nommé. Le débogueur se connecte via ce canal. Pour plus d’informations sur la création de ce canal, consultez la documentation de votre machine virtuelle.
Démarrez le débogueur en mode avec élévation de privilèges, par exemple à partir d’une invite de commandes d’administrateur. Le débogueur doit s’exécuter en mode avec élévation de privilèges lors du débogage d’une machine virtuelle sur un canal série. Une fois le débogueur attaché et en cours d’exécution, redémarrez la machine virtuelle cible.
Démarrage de la session de débogage à l’aide de WinDbg
Sur l’ordinateur hôte, ouvrez WinDbg en tant qu’administrateur. Le débogueur doit s’exécuter en mode avec élévation de privilèges lors du débogage d’une machine virtuelle sur un canal série. Dans le menu Fichier, choisissez Débogage du noyau. Dans la boîte de dialogue Débogage du noyau, ouvrez l’onglet COM. Cochez la case Canal et cochez la case Reconnect. Pour Baud Rate, entrez 115200. Pour les réinitialisations, entrez 0.
Si le débogueur s’exécute sur le même ordinateur que la machine virtuelle, entrez le code suivant pour port.
\\.\pipe\PipeName.
Si le débogueur s’exécute sur un ordinateur différent de la machine virtuelle, entrez les éléments suivants pour port.
\\VMHost\pipe\PipeName
Cliquez sur OK.
Vous pouvez également démarrer WinDbg sur la ligne de commande. Si le débogueur s’exécute sur le même ordinateur physique que la machine virtuelle, entrez la commande suivante dans une fenêtre d’invite de commandes.
windbg -k com :pipe,port=\.\pipe\PipeName,resets=0,reconnect
Si le débogueur s’exécute sur un autre ordinateur physique de la machine virtuelle, entrez la commande suivante dans une fenêtre d’invite de commandes.
windbg -k com :pipe,port=\\VMHost\pipe\PipeName,resets=0,reconnect
Démarrage de la session de débogage à l’aide de KD
Pour déboguer une machine virtuelle qui s’exécute sur le même ordinateur physique que le débogueur, entrez la commande suivante dans une fenêtre d’invite de commandes avec élévation de privilèges .
kd -k com :pipe,port=\.\pipe\PipeName,resets=0,reconnect
Pour déboguer une machine virtuelle qui s’exécute sur un autre ordinateur physique que le débogueur, entrez la commande suivante dans une fenêtre d’invite de commandes.
kd -k com :pipe,port=\\VMHost\pipe\PipeName,resets=0,reconnect
Paramètres
VMHost
Spécifie le nom de l’ordinateur sur lequel la machine virtuelle est en cours d’exécution.
PipeName
Spécifie le nom du canal que vous avez créé sur la machine virtuelle.
resets=0
Spécifie qu’un nombre illimité de paquets de réinitialisation peut être envoyé à la cible lorsque l’hôte et la cible sont synchronisés. Utilisez le paramètre resets=0 pour Microsoft Virtual PC et d’autres machines virtuelles dont les canaux suppriment les octets excédentaires. N’utilisez pas ce paramètre pour VMware ou d’autres machines virtuelles dont les canaux ne suppriment pas tous les octets excédentaires.
reconnecter
Le débogueur se déconnecte et reconnecte automatiquement le canal en cas d’échec de lecture/écriture. En outre, si le débogueur ne trouve pas le canal nommé lorsque le débogueur est démarré, le paramètre de reconnexion entraîne l’affichage d’un canal nommé PipeName . Utilisez la reconnexion pour un PC virtuel et d’autres machines virtuelles qui détruisent et recréent leurs canaux pendant le redémarrage d’un ordinateur. N’utilisez pas ce paramètre pour VMware ou d’autres machines virtuelles qui conservent leurs canaux pendant le redémarrage d’un ordinateur.
Pour plus d’informations sur les options de ligne de commande supplémentaires, consultez options de ligne de commande KD ou Options de ligne de commande WinDbg.
Machines Virtuelles de génération 2
Par défaut, les ports COM ne sont pas présentés dans les machines virtuelles de génération 2. Vous pouvez ajouter des ports COM via PowerShell ou WMI. Pour que les ports COM soient affichés dans la console du Gestionnaire Hyper-V, ils doivent être créés avec un chemin d’accès.
Pour activer le débogage du noyau à l’aide d’un port COM sur une machine virtuelle de génération 2, procédez comme suit :
Désactivez le démarrage sécurisé en entrant cette commande PowerShell :
Set-VMFirmware –Vmname VmName –EnableSecureBoot Off
où VmName est le nom de votre machine virtuelle.
Ajoutez un port COM à la machine virtuelle en entrant cette commande PowerShell :
Set-VMComPort –VMName VmName 1 \\.\pipe\PipeName
Par exemple, la commande suivante configure le premier port COM sur la machine virtuelle TestVM pour se connecter à testpipe nommé sur l’ordinateur local.
Set-VMComPort –VMName TestVM 1 \\.\pipe\TestPipe
Une fois le débogueur attaché et en cours d’exécution, arrêtez et démarrez à froid la machine virtuelle pour activer les ports COM dans la machine virtuelle. Les UARTS émulés ne sont pas disponibles pour le débogage, sauf si au moins un est réellement configuré avec un nom de canal et qu’ils ne peuvent pas être ajoutés à chaud.
Réactivez le démarrage sécurisé, une fois que vous avez terminé la mise à jour des modifications de configuration.
Pour plus d’informations sur les machines virtuelles de génération 2, consultez Vue d’ensemble de la machine virtuelle de génération 2.
Remarques
Si l’ordinateur cible a cessé de répondre, l’ordinateur cible est toujours arrêté en raison d’une action de débogage du noyau antérieure ou vous avez utilisé l’option de ligne de commande -b, le débogueur se décompose immédiatement dans l’ordinateur cible.
Sinon, l’ordinateur cible continue de s’exécuter jusqu’à ce que le débogueur l’interrompe.
Résolution des problèmes de pare-feu et d’accès réseau
Votre débogueur (WinDbg ou KD) doit avoir accès via le pare-feu. Cela peut même être le cas pour les ports série virtuels pris en charge par les cartes réseau.
Si vous êtes invité par Windows à désactiver le pare-feu lorsque le débogueur est chargé, sélectionnez les trois zones.
Selon les spécificités de la machine virtuelle en cours d’utilisation, vous devrez peut-être modifier les paramètres réseau de vos machines virtuelles pour les relier à la carte de débogage du réseau noyau Microsoft. Sinon, les machines virtuelles n’auront pas accès au réseau.
Pare-feu Windows
Vous pouvez utiliser le Panneau de configuration pour autoriser l’accès via le pare-feu Windows. Ouvrez Panneau de configuration > système et sécurité, puis sélectionnez Autoriser une application via le Pare-feu Windows. Dans la liste des applications, recherchez le débogueur symbolique Windows GUI et le débogueur du noyau Windows. Utilisez les cases à cocher pour autoriser ces deux applications via le pare-feu. Redémarrez votre application de débogage (WinDbg ou KD).
Machines virtuelles tierces
VMWare Si vous redémarrez la machine virtuelle à l’aide des installations VMWare (par exemple, le bouton de réinitialisation), quittez WinDbg, puis redémarrez WinDbg pour continuer le débogage. Pendant le débogage de machine virtuelle, VMWare consomme souvent 100 % du processeur.
Voir aussi
Configuration du débogage réseau d’une machine virtuelle avec KDNET
Configuration manuelle du débogage en mode noyau
Configuration du débogage réseau d’un hôte de machine virtuelle