Déboguer un service

Vous pouvez utiliser l’une des méthodes suivantes pour déboguer votre service.

  • Utilisez votre débogueur pour déboguer le service pendant son exécution. Tout d’abord, obtenez l’identificateur de processus (PID) du processus de service. Une fois que vous avez obtenu le PID, attachez-vous au processus en cours d’exécution. Pour plus d’informations sur la syntaxe, consultez la documentation fournie avec votre débogueur.

  • Appelez la fonction DebugBreak pour appeler le débogueur pour le débogage juste-à-temps.

  • Spécifiez un débogueur à utiliser lors du démarrage d’un programme. Pour ce faire, créez une clé appelée Options d’exécution de fichier image à l’emplacement de Registre suivant :

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

    Créez une sous-clé portant le même nom que votre service (par exemple, MYSERV.EXE). À cette sous-clé, ajoutez une valeur de type REG_SZ, nommée Débogueur. Utilisez le chemin d’accès complet au débogueur comme valeur de chaîne. Dans l’applet du panneau de configuration Services, sélectionnez votre service, cliquez sur Démarrage et case activée Autoriser le service à interagir avec le bureau. Le service doit être un service interactif, sinon le débogueur ne peut pas s’exécuter sur le bureau par défaut. Notez que cette technique n’est plus prise en charge à partir de Windows Vista, car tous les services sont exécutés dans une session réservée exclusivement aux services et ne prend pas en charge l’affichage d’une interface utilisateur.

  • Utilisez le suivi d’événements pour journaliser les informations.

Pour déboguer le code d’initialisation d’un service de démarrage automatique, vous devez installer et exécuter temporairement le service en tant que service de démarrage à la demande.

Parfois, il peut être nécessaire d’exécuter un service en tant qu’application console à des fins de débogage. Dans ce scénario, la fonction StartServiceCtrlDispatcher retourne ERROR_FAILED_SERVICE_CONTROLLER_CONNECT. Par conséquent, veillez à structurer votre code de telle sorte que le code spécifique au service ne soit pas appelé lorsque cette erreur est retournée.

Débogage d’une application de service

Outils de débogage pour Windows