Débogage automatique de l’application de service
Un débogueur peut être lancé automatiquement lorsque l’application de service démarre. Vous pouvez également le lancer automatiquement lorsque l’application de service rencontre une exception ou exécute une commande DebugBreak . Si vous avez choisi l’une de ces méthodes, cette rubrique explique comment procéder. Si vous ne savez pas quelle méthode choisir, consultez Choisir la meilleure méthode.
Ensuite, utilisez la procédure suivante :
Effectuez l’une des étapes préparatoires suivantes :
- Si vous envisagez de déboguer l’application de service dès le début, y compris son code d’initialisation, suivez la procédure décrite dans Activation du débogage du code d’initialisation. Si vous souhaitez que l’application de service s’insère dans le débogueur lorsqu’elle se bloque ou rencontre une exception, suivez la procédure décrite dans Activation de l’application de service pour s’insérer dans le débogueur.
- Pour vous assurer que l’application de service autorise le débogueur à s’exécuter correctement, effectuez la procédure décrite dans Ajuster le délai d’expiration de l’application de service.
- Si le service est combiné à d’autres services dans un seul processus SvcHost, effectuez la procédure décrite dans Isoler le service.
Si le service est déjà en cours d’exécution, vous devez le redémarrer pour que ces modifications prennent effet. Nous vous recommandons de redémarrer Windows lui-même, afin de supprimer tous les effets du service en cours d’exécution. Si vous ne souhaitez pas redémarrer Windows, utilisez les commandes suivantes, où ServiceName est le nom du service :
net stop ServiceName net start ServiceName
Si vous avez choisi de déboguer le code d’initialisation de l’application de service, lorsque le service démarre, le débogueur est lancé et s’attache à l’application de service.
Si vous avez choisi de laisser le débogueur être déclenché par une exception, l’application de service s’exécute normalement jusqu’à ce qu’elle rencontre une exception ou exécute une fonction DebugBreak . À ce stade, le débogueur est lancé et s’attache à l’application de service.
L’étape suivante dépend de la ligne de commande du débogueur que vous avez spécifiée à l’étape 1 :
- Si vous avez spécifié un débogueur sans aucune option de communication à distance, ce débogueur est lancé et sa fenêtre devient visible.
- Si vous avez spécifié NTSD avec les options -server et -noio, NTSD est lancé sans fenêtre de console. Vous pouvez ensuite vous connecter à la session de débogage à partir d’un autre ordinateur en démarrant n’importe quel débogueur en mode utilisateur avec le paramètre -remote. Pour obtenir des instructions, consultez Activation d’un client de débogage.
- Si vous avez spécifié NTSD avec l’option -d, NTSD est lancé sans fenêtre de console. Vous pouvez ensuite vous connecter à la session de débogage à l’aide du débogueur de noyau exécuté sur un autre ordinateur. Pour obtenir des instructions, consultez Contrôle du débogueur User-Mode à partir du débogueur de noyau.
- Si vous avez spécifié NTSD avec les options -ddefer et -server, NTSD est lancé sans fenêtre de console. Vous pouvez ensuite vous connecter à la session de débogage à l’aide d’un débogueur de noyau et d’un débogueur distant en mode utilisateur, s’exécutant sur un autre ordinateur que le service (mais éventuellement sur le même ordinateur). Pour obtenir des instructions, consultez Combinaison de cette méthode avec le débogage à distance.
Lorsque le débogueur démarre, le service s’interrompt au point d’arrêt du processus initial, à l’exception ou à la commande DebugBreak . Cela vous permet d’examiner l’état actuel de l’application de service, de définir des points d’arrêt et de faire d’autres choix de configuration souhaités.
Utilisez g (Go) ou une autre commande d’exécution pour reprendre l’exécution de l’application de service.