Comment : déboguer les applications de service Windows
Étant donné qu'un service doit être exécuté dans le Gestionnaire de contrôle des services plutôt que dans Visual Studio, son débogage n'est pas aussi simple que celui des autres types d'applications Visual Studio. Pour déboguer un service, vous devez le démarrer et joindre un débogueur au processus dans lequel il s'exécute. Vous pouvez alors déboguer votre application à l'aide des fonctionnalités de débogage standard de Visual Studio.
Avertissement
Avant de procéder à cette jointure, vérifiez ce en quoi consiste le processus concerné et pesez bien les conséquences de cette opération qui risque de supprimer le processus. Par exemple, si vous effectuez une jointure au processus WinLogon et interrompez ensuite le débogage, le système s'arrêtera, parce qu'il ne peut pas fonctionner sans le processus WinLogon.
Vous ne pouvez joindre le débogueur qu'à un service en cours d'exécution. Le processus de jointure interrompt le fonctionnement du service ; il n'a pas pour effet d'arrêter ni de suspendre le traitement du service. Autrement dit, si votre service est en cours d'exécution lorsque vous commencez le débogage, il se trouve toujours techniquement à l'état Démarré pendant que vous le déboguez, mais son traitement est suspendu.
La jointure au processus du service vous permet de déboguer la majeure partie du code ; par exemple, comme le service est déjà démarré, cette approche ne vous permet pas déboguer le code de sa méthode OnStart, ni celui de la méthode Main utilisée pour le charger. Pour remédier à cela, vous pouvez créer dans votre application un deuxième service temporaire servant uniquement au débogage. Vous pouvez installer les deux services puis démarrer le service factice pour charger le processus du service. Une fois que le service temporaire a démarré le processus, effectuez la jointure à l'aide du menu Déboguer de Visual Studio.
Une fois la jointure au processus effectuée, vous pouvez définir des points d'arrêt et vous en servir pour déboguer votre code. Après avoir quitté la boîte de dialogue utilisée pour faire la jointure au processus, vous êtes en mode débogage. Le Gestionnaire de contrôle des services vous permet de démarrer, d'arrêter, d'interrompre et de continuer votre service, en accédant aux points d'arrêt que vous avez définis. Quand le débogage est terminé, vous pouvez supprimer le service factice.
Notes
Le débogage de la méthode OnStart peut s'avérer difficile. En effet, le Gestionnaire de services Windows impose un délai de trente secondes à toute tentative de démarrage d'un service. Pour plus d'informations, consultez Résolution des problèmes : débogage des services Windows.
Pour déboguer un service
Installez le service. Pour plus d'informations, consultez Comment : installer et désinstaller des services.
Démarrez le service à partir du Gestionnaire de contrôle des services, de l'Explorateur de serveurs ou du code. Pour plus d'informations, consultez Comment : démarrer des services.
Dans Visual Studio, cliquez sur Processus dans le menu Débogage.
La boîte de dialogue Processus s'affiche.
Cliquez sur Afficher les processus système.
Dans la section Processus disponibles, cliquez sur le processus de votre service, puis sur Attacher.
Conseil
Le processus porte le même nom que le fichier exécutable de votre service.
La boîte de dialogue Attacher au processus s'affiche.
Cliquez sur les options requises, puis sur OK pour fermer la boîte de dialogue.
Notes
Vous êtes maintenant en mode débogage.
Définissez les points d'arrêt que vous souhaitez utiliser dans votre code.
Accédez au Gestionnaire de contrôles des services et exploitez votre service par l'envoi de commandes, d'arrêt, d'interruption et de continuation, afin d'accéder aux points d'arrêt. Pour plus d'informations sur l'exécution du Gestionnaire de contrôle des services, consultez Comment : démarrer des services.
Voir aussi
Tâches
Comment : installer et désinstaller des services
Comment : démarrer des services