Partager via


Utilisation de KDbgCtrl

L’outil KDbgCtrl (contrôle de débogage du noyau, kdbgctrl.exe) peut être utilisé pour contrôler la connexion de débogage du noyau à partir de l’ordinateur cible.

Pour utiliser cet outil, votre ordinateur cible doit exécuter Windows Server 2003 ou une version ultérieure de Windows.

KDbgCtrl peut contrôler cinq paramètres : débogage complet du noyau, débogage automatique du noyau, gestion des erreurs en mode utilisateur, blocage du débogage du noyau et taille de la mémoire tampon DbgPrint.

Pour utiliser KDbgCtrl, vous devez avoir activé auparavant le débogage du noyau dans les paramètres de démarrage de l’ordinateur cible avant le dernier démarrage. Sans cela, KDbgCtrl ne peut pas être utilisé pour activer le débogage du noyau. Pour en savoir plus sur ces paramètres de démarrage, consultez Paramètres de démarrage pour activer le débogage .

Débogage complet du noyau

Lorsque le débogage complet du noyau est activé, un débogueur de noyau s’exécutant sur l’ordinateur hôte peut s’introduire dans l’ordinateur cible. L’ordinateur cible se connecte au débogueur du noyau si une exception en mode noyau est rencontrée. Les messages de la cible vers l’hôte, comme la sortie DbgPrint , les messages de chargement de symboles et les débogueurs en mode utilisateur redirigés, sont également autorisés.

Si ce paramètre est désactivé, tous les signaux de l’ordinateur hôte sont ignorés par la cible.

Le débogage complet du noyau est activé par défaut. Utilisez kdbgctrl -c pour vérifier la valeur de paramètre actuelle. Utilisez kdbgctrl -d pour désactiver ce paramètre. Utilisez kdbgctrl -e pour activer ce paramètre.

Si vous souhaitez vérifier le paramètre actuel et l’utiliser pour contrôler l’exécution dans un fichier batch, vous pouvez utiliser la commande kdbgctrl -cx. Pour en savoir plus sur cette commande, consultez Options de ligne de commande KDbgCtrl.

Débogage automatique du noyau

Si le débogage complet du noyau est activé, le paramètre actuel pour le débogage automatique du noyau est sans importance : toutes les communications sont autorisées.

Lorsque le débogage complet du noyau est désactivé et que le débogage automatique du noyau l’est aussi, seul l’ordinateur cible peut lancer une connexion de débogage.

Dans ce cas, seule une exception en mode noyau, un point d’arrêt ou un autre événement en mode noyau entraîne l’établissement d’une connexion. Celle-ci n’est pas établie pour la sortie DbgPrint, les messages de chargement de symboles, l’entrée et la sortie du débogueur en mode utilisateur redirigé ou d’autres messages similaires. Ces messages sont stockés dans la mémoire tampon DbgPrint au lieu d’être envoyés au débogueur du noyau.

Si une exception ou un événement provoque l’arrêt de la cible dans le débogueur du noyau, le débogage complet du noyau est automatiquement activé, comme si vous aviez exécuté kdbgctrl -e.

Le débogage automatique du noyau est désactivé par défaut (bien que cela n’ait pas d’importance si le débogage complet du noyau n’est pas également désactivé). Utilisez kdbgctrl -ca pour vérifier la valeur de paramètre actuelle. Utilisez kdbgctrl -da pour désactiver ce paramètre. Utilisez kdbgctrl -ea pour activer ce paramètre.

Gestion des erreurs en mode utilisateur

Lorsque la gestion des erreurs en mode utilisateur est activée, certains événements en mode utilisateur entraînent l’introduction de l’ordinateur cible dans le débogueur du noyau.

Plus précisément, toutes les interruptions int 3 (comme les points d’arrêt insérés dans le code par un débogueur ou des appels à DbgBreakPoint) entraînent une introduction dans le débogueur du noyau. Toutefois, les exceptions standard (notamment les violations d’accès et la division par zéro) ne sont généralement pas envoyées au débogueur du noyau.

Si un débogueur en mode utilisateur est déjà attaché au processus, ce débogueur capture toutes les erreurs en mode utilisateur et le débogueur du noyau ne sera pas modifié. Pour connaître l’ordre de priorité des différents gestionnaires d’erreurs en mode utilisateur, consultez Activation du débogage postmortem.

Pour que la gestion des erreurs en mode utilisateur fonctionne, le débogage complet du noyau ou le débogage automatique du noyau doivent également être activés.

La gestion des erreurs en mode utilisateur est activée par défaut. Utilisez kdbgctrl -cu pour vérifier la valeur de paramètre actuelle. Utilisez kdbgctrl -du pour désactiver ce paramètre. Utilisez kdbgctrl -eu pour activer ce paramètre.

Blocage du débogage du noyau

Dans certains cas, vous pouvez vouloir configurer l’ordinateur cible pour le débogage du noyau, mais attendre d’avoir démarré l’ordinateur cible pour activer le débogage du noyau. Vous pouvez le faire en bloquant le débogage du noyau.

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.

Pour bloquer le débogage du noyau, configurez l’ordinateur cible à l’aide de commandes similaires à la suivante :

bcdedit /debug on
bcdedit /dbgsettings 1394 channel:32 /start DISABLE /noumex

Lorsque vous redémarrez l’ordinateur cible, il est préparé pour le débogage du noyau, mais ce dernier et la gestion des erreurs en mode utilisateur sont désactivées. À ce stade, un ordinateur hôte ne peut pas s’attacher à l’ordinateur cible, les vérification de bogues ne seront pas interceptées par le débogueur du noyau, et les exceptions en mode utilisateur ne provoquent pas l’introduction dans le débogueur du noyau.

Lorsque vous êtes prêt, vous pouvez activer le débogage du noyau (sans redémarrer l’ordinateur cible) en entrant les commandes suivantes.

kdbgctrl -db
kdbgctrl -e

Ensuite, vous pouvez désactiver le débogage du noyau en entrant les commandes suivantes.

kdbgctrl -d
kdbgctrl -eb

Vous pouvez utiliser kdbgctrl -cb pour vérifier si le débogage du noyau est bloqué.

Taille de la mémoire tampon DbgPrint

La mémoire tampon DbgPrint stocke les messages que l’ordinateur cible a envoyés au débogueur du noyau.

Si le débogage complet du noyau est activé, ces messages apparaissent automatiquement dans le débogueur du noyau. Toutefois, si cette option est désactivée, ces messages sont stockés dans la mémoire tampon. À un moment ultérieur, vous pouvez activer le débogage du noyau, vous connecter à un débogueur de noyau et utiliser l’extension !dbgprint pour afficher le contenu de cette mémoire tampon. Pour en savoir plus sur cette mémoire tampon, consultez la rubrique « Mémoire tampon DbgPrint ».

La taille par défaut de la mémoire tampon DbgPrint est 4 Ko sur une build gratuite de Windows. Pour déterminer la taille actuelle de la mémoire tampon, utilisez kdbgctrl -cdb. Pour modifier la taille de la mémoire tampon, utilisez kdbgctrl -sdbTaille, où Taille spécifie la nouvelle taille de la mémoire tampon. Pour en savoir plus sur la syntaxe, consultez Options de ligne de commande KDbgCtrl.

Exemples

Pour afficher tous les paramètres actuels, utilisez la commande suivante :

kdbgctrl -c -ca -cu -cb -cdb 

Pour restaurer les paramètres par défaut, utilisez la commande suivante :

kdbgctrl -e -da -eu -db -sdb 0x1000 

Pour verrouiller l’ordinateur hôte afin qu’il soit uniquement contacté sur les exceptions, utilisez la commande suivante :

kdbgctrl -d -ea -eu 

Pour désactiver tout le débogage du noyau, utilisez la commande suivante :

kdbgctrl -d -da 

Si vous désactivez tout le débogage du noyau, vous souhaiterez peut-être également augmenter la taille de la mémoire tampon DbgPrint. Cela garantit que tous les messages seront enregistrés au cas où vous auriez besoin de les consulter ultérieurement. Si vous disposez d’un mégaoctet de mémoire, vous pouvez utiliser la commande suivante :

kdbgctrl -sdb 0x100000