Partager via


Choix de la meilleure méthode pour déboguer une application de service

Il existe plusieurs façons de déboguer une application de service. Pour choisir la méthode appropriée, vous devez d’abord faire deux choix : l’heure à laquelle le débogueur est attaché à l’application de service et la configuration de débogage à utiliser.

Il existe trois étapes auxquelles le débogueur peut être attaché à l’application de service :

  • Début du démarrage du service. Le débogueur est lancé automatiquement au début du service. Choisissez cette option si vous souhaitez déboguer le code d’initialisation du service.

  • La première fois que le service rencontre une exception. Le débogueur est lancé automatiquement lorsqu’une exception ou un incident se produit ou si l’application de service appelle la fonction DebugBreak. Choisissez cette option si vous souhaitez que le débogueur apparaisse lorsqu’un problème est rencontré, mais pas avant.

  • Une fois le service exécuté normalement. Vous pouvez attacher manuellement un débogueur à un service en cours d’exécution à tout moment. Choisissez cette option si vous ne souhaitez pas effectuer de préparations préalables au débogage.

Il existe trois configurations de débogage que vous pouvez choisir :

  • Débogage local. Un débogueur unique s’exécutant sur le même ordinateur que le service.

  • Débogage à distance. Un serveur de débogage s’exécutant sur le même ordinateur que le service, contrôlé à partir d’un client de débogage s’exécutant sur un deuxième ordinateur.

  • Débogage en mode utilisateur contrôlé par le noyau. Débogueur en mode utilisateur s’exécutant sur le même ordinateur que le service, contrôlé à partir d’un débogueur de noyau sur un deuxième ordinateur.

Si votre service s’exécute sur Windows Vista ou une version ultérieure de Windows, il existe une restriction sur la façon dont ces choix peuvent être combinés. Si vous souhaitez déboguer à partir du début du démarrage du service ou à partir du moment où une exception est rencontrée, vous devez utiliser le débogage à distance ou le débogage en mode utilisateur contrôlé par le noyau.

En d’autres termes, vous ne pouvez pas utiliser le débogage local, sauf si vous envisagez d’attacher le débogueur manuellement une fois que le service est déjà en cours d’exécution. Cette restriction résulte du fait que, dans ces versions de Windows, les services s’exécutent dans la session 0 et tout débogueur qui est automatiquement lancé et attaché au service est également dans la session 0 et n’a pas d’interface utilisateur sur l’ordinateur sur lequel le service s’exécute.