Bien démarrer avec le débogage Windows

Cet article explique comment se lancer dans le débogage pour Windows. Si votre objectif est d’utiliser le débogueur pour analyser un fichier de vidage de mémoire, veuillez consulter la section Analyser les fichiers de vidage de mémoire en utilisant WinDbg.

Pour vous lancer dans le débogage Windows, veuillez suivre la procédure ci-dessous.

1. Identifier les systèmes hôte et cible

Deux systèmes informatiques séparés sont généralement utilisés pour le débogage car l’exécution des instructions sur le processeur est souvent interrompue durant le processus. Le débogueur s’exécute sur le système hôte, et le code que vous souhaitez déboguer s’exécute sur le système cible.

Hôte <--------------------------------------------------> Cible

Diagram illustrating the connection between host and target systems with a double arrow.

Dans certaines situations, il est possible d’utiliser une machine virtuelle comme second système. Par exemple, un PC virtuel pourrait fonctionner sur le même PC que le code que vous avez besoin de déboguer. Cependant, si votre code communique avec du matériel de bas niveau, utiliser un PC virtuel pourrait ne pas être la meilleure approche. Pour plus d’informations, veuillez consulter la section Configurer le débogage réseau d’une machine virtuelle - KDNET.

2. Déterminer le type de débogueur : mode noyau ou mode utilisateur

Ensuite, vous devez déterminer si vous devez utiliser le débogage en mode noyau ou en mode utilisateur.

  • Le système d’exploitation et les programmes privilégiés s’exécutent en mode noyau. Le code en mode noyau a la permission d’accéder à n’importe quelle partie du système, et il n’est pas restreint comme le code en mode utilisateur. Le code en mode noyau peut accéder à n’importe quelle partie de tout autre processus s’exécutant soit en mode utilisateur, soit en mode noyau. Une grande partie de la fonctionnalité de base du système d’exploitation et de nombreux pilotes de périphérique s’exécutent en mode noyau.

  • Les applications et les sous-systèmes sur l’ordinateur s’exécutent en mode utilisateur. Les processus qui s’exécutent en mode utilisateur le font dans leurs propres espaces d’adresse virtuels. Ils ne peuvent pas accéder directement à de nombreuses parties du système, comme le matériel système, la mémoire qui n’est pas allouée à leur utilisation, et d’autres parties du système qui pourraient compromettre l’intégrité du système. Les processus qui s’exécutent en mode utilisateur sont effectivement isolés du système et des autres processus en mode utilisateur, ils ne peuvent donc pas interférer avec ces ressources.

Si votre objectif est de déboguer un pilote, déterminez si le pilote est un pilote en mode noyau ou un pilote en mode utilisateur. Les pilotes Windows Driver Model (WDM) et Kernel-Mode Driver Framework (KMDF) sont tous deux des pilotes en mode noyau. Comme le nom l’indique, les pilotes User-Mode Driver Framework (UMDF) sont des pilotes en mode utilisateur.

Pour certains problèmes, il peut être difficile de déterminer dans quel mode le code s’exécute. Dans ce cas, vous pourriez avoir besoin de choisir un mode afin de voir quelles informations sont disponibles dans ce mode. Certains problèmes nécessitent d’utiliser le débogueur à la fois en mode utilisateur et en mode noyau.

Selon le mode dans lequel vous déboguez, vous pourriez avoir besoin de configurer et d’utiliser les débogueurs de différentes manières. Certaines commandes de débogage fonctionnent de la même manière dans les deux modes, et certaines commandes fonctionnent différemment.

Pour en savoir plus sur l’utilisation du débogueur en mode noyau :

En savoir plus sur l’utilisation du débogueur en mode utilisateur :

3. Choisissez votre environnement de débogage

Le débogueur WinDbg fonctionne bien dans la plupart des situations, mais vous pourriez dans certains cas vouloir utiliser un autre débogueur, comme les débogueurs de console pour l’automatisation ou Visual Studio. Pour plus d’informations, veuillez consulter la section Environnements de débogage.

4. Déterminer comment connecter la cible et l’hôte

Les systèmes cible et hôte sont généralement connectés par un réseau Ethernet. Si vous travaillez sur les premières étapes de mise en place, ou si vous n’avez pas de connexion Ethernet sur un appareil, d’autres options de connexion réseau sont disponibles. Pour plus d’informations, consultez les articles suivants :

5. Choisissez entre les outils de débogage 32 bits ou 64 bits

Le choix d’un débogueur 32 bits ou 64 bits dépend de la version de Windows qui fonctionne sur les systèmes cible et hôte et si vous déboguez du code 32 bits ou 64 bits. Pour plus d’informations, veuillez consulter la section Choisir des outils de débogage 32 bits ou 64 bits.

6. Configurer les symboles

Pour utiliser toutes les fonctionnalités avancées que WinDbg offre, vous devez charger les symboles appropriés. Si vous n’avez pas correctement configuré les symboles, vous recevrez des messages indiquant que les symboles ne sont pas disponibles lorsque vous essayez d’utiliser des fonctionnalités qui dépendent des symboles. Pour plus d’informations, veuillez consulter la section Symboles pour le débogage Windows.

7. Configurer le code source

Si votre objectif est de déboguer votre propre code source, vous devez configurer un chemin vers votre code source. Pour plus d’informations, veuillez consulter la section Chemin source.

8. Se familiariser avec le fonctionnement du débogueur

La section Fonctionnement du débogueur de cette documentation décrit le fonctionnement du débogueur pour diverses tâches. Par exemple, Charger des DLL d’extension de débogueur explique comment charger des extensions de débogueur.

9. Se familiariser avec les techniques de débogage

Les techniques de débogage standard s’appliquent à la plupart des scénarios de débogage, comme par exemple la définition de points d’arrêt, l’inspection de la pile d’appels et la recherche d’une fuite de mémoire. Les techniques de débogage spécialisées s’appliquent à des technologies particulières ou à des types de code. Par exemple, le débogage Plug and Play, le débogage KMDF et le débogage RPC.

10. Utiliser les commandes de référence du débogueur

Vous pouvez utiliser différentes commandes de débogage pendant que vous travaillez dans le débogueur. Utilisez la commande .hh dans le débogueur pour afficher des informations utiles sur n’importe quelle commande de débogage. Pour plus d’informations sur les commandes disponibles, veuillez consulter la section Référence du débogueur.

11. Utiliser des extensions de débogage pour des technologies spécifiques

De nombreuses extensions de débogage peuvent être utilisées pour analyser des structures de données spécifiques à un domaine. Pour plus d’informations, veuillez consulter la section Extensions spécialisées.

Cette documentation nécessite certaines connaissances sur les composants internes de base de Windows. Pour en savoir plus sur les composants internes de Windows, comme l’utilisation de la mémoire, le contexte, les threads et les processus, vous pouvez consulter des ressources telles que Windows Internals par Pavel Yosifovich, Mark E. Russinovich, David A. Solomon et Alex Ionescu.

13. Consultez d’autres ressources de débogage

Parmi les autres ressources, on retrouve notamment les livres et vidéos suivants :

  • Inside Windows Debugging: Practical Debugging and Tracing Strategies par Tarik Soulami
  • Advanced Windows Debugging par Mario Hewardt et Daniel Pravat
  • La série de vidéosDefrag Tools, épisodes 13 à 29, tous sur WinDbg

Voir aussi