A noterCet article s'applique à un système d'exploitation différent de celui que vous utilisez. Le contenu de l'article qui ne vous concerne peut-être pas est désactivé.
Cet article étape par étape explique comment déboguer un Windows service en utilisant le débogueur WinDbg (windbg.exe). Pour déboguer un service Windows, vous pouvez attacher le débogueur WinDbg au processus qui héberge le service après que le service de démarrage, ou vous pouvez configurer le service démarre avec la WinDbg débogueur attaché permettant de résoudre des problèmes service démarrage liés. Cet article décrit ces deux méthodes.
Associer le débogueur WinDbg à un service après que le service de démarrage
Cette méthode est semblable à la méthode que vous pouvez utiliser pour joindre un débogueur à un processus et puis déboguer un processus.
Utiliser l'ID processus du processus qui héberge le service que vous souhaitez déboguer
Pour déterminer le processus ID (PID) du processus qui héberge le service que vous souhaitez déboguer, appliquez l'une des méthodes suivantes.
Méthode 1: utiliser le Gestionnaire des tâches
Cliquez avec le bouton droit sur la barre des tâches, puis cliquez sur Gestionnaire des tâches . La boîte de dialogue Gestionnaire des tâches de Windows s'affiche.
Cliquez sur l'onglet processus de la boîte de dialogue Gestionnaire des tâches de Windows .
Sous Nom de l'image , cliquez sur le nom image du processus qui héberge le service que vous souhaitez déboguer. Notez l'ID de ce processus tel que spécifié par la valeur du champ PID correspondant.
Méthode 2: utiliser l'utilitaire de liste de tâches (tlist.exe)
Cliquez sur Démarrer , puis cliquez sur Exécuter . La boîte de dialogue Exécuter s'affiche.
Dans la zone Ouvrir , tapez cmd , puis cliquez sur OK .
À l'invite de commandes, modifiez le chemin de répertoire pour refléter l'emplacement du fichier tlist.exe sur votre ordinateur.
note Le fichier tlist.exe se trouve généralement dans le répertoire suivant : C:\Program Files\Debugging Tools for Windows
À l'invite de commandes, tapez tlist permettant de répertorier le nom d'image et l'ID de tous les processus en cours d'exécution sur votre ordinateur de processus.
note Notez l'ID de processus du processus qui héberge le service que vous souhaitez déboguer.
À une invite de commandes, modifiez le chemin de répertoire pour refléter l'emplacement du fichier windbg.exe sur votre ordinateur.
note Si une invite de commande n'est pas ouverte, procédez comme suit un et b de la méthode 1. Le fichier windbg.exe se trouve généralement dans le répertoire suivant : C:\Program Files\Debugging Tools for Windows.
À l'invite de commandes, tapez windbg ?p ProcessID /g pour joindre le débogueur WinDbg au processus qui héberge le service que vous souhaitez déboguer.
note ProcessID est un espace réservé pour l'ID de processus du processus qui héberge le service que vous souhaitez déboguer.
Utilisez le nom image du processus qui héberge le service que vous souhaitez déboguer
Vous pouvez utiliser cette méthode uniquement s'il existe exactement une instance en cours d'exécution du processus qui héberge le service que vous souhaitez exécuter. Pour ce faire, procédez comme suit :
Cliquez sur Démarrer , puis cliquez sur Exécuter . La boîte de dialogue Exécuter s'affiche.
Dans la zone Ouvrir , tapez cmd , puis cliquez sur OK pour ouvrir une invite de commande.
À l'invite de commandes, modifiez le chemin de répertoire pour refléter l'emplacement du fichier windbg.exe sur votre ordinateur.
note Le fichier windbg.exe se trouve généralement dans le répertoire suivant : C:\Program Files\Debugging Tools for Windows.
À l'invite de commandes, tapez windbg ?pn ImageName /g pour joindre le débogueur WinDbg au processus qui héberge le service que vous souhaitez déboguer.
note ImageName est un espace réservé pour le nom d'image du processus qui héberge le service que vous souhaitez déboguer. Le «-pn " option de ligne de commande indique que l'argument de ligne de commande ImageName est le nom d'image d'un processus.
Démarrer le débogueur WinDbg et associer au processus qui héberge le service que vous souhaitez déboguer
Démarrez l'Explorateur Windows.
Recherchez le fichier windbg.exe sur votre ordinateur.
note Le fichier windbg.exe se trouve généralement dans le répertoire suivant : C:\Program Files\Debugging Tools for Windows
Exécutez le fichier windbg.exe avec le commutateur de ligne de commande /g pour démarrer le WinDbg débogueur. Le commutateur de ligne de commande /g permet le processus suivi continuer après que le point de rupture est défini.
Dans le menu Fichier , cliquez sur Joindre un processus pour afficher la boîte de dialogue Attacher à cours .
Cliquez sur pour sélectionner le n?ud qui correspond au processus qui héberge le service que vous souhaitez déboguer, puis cliquez sur OK .
Dans la boîte de dialogue qui s'affiche, cliquez sur Oui pour enregistrer les informations de base Espace de travail. Notez que vous pouvez maintenant déboguer le code disassembled de votre service.
Configurer un service pour démarrer avec le WinDbg débogueur attaché
Vous pouvez utiliser cette méthode pour déboguer les services si vous souhaitez résoudre les problèmes de service démarrage liés.
Configurer les options de « image fichier exécution ». Pour cela, appliquez l'une des méthodes suivantes :
Méthode 1: utiliser Global Flags Editor (gflags.exe)
Démarrez l'Explorateur Windows.
Recherchez le fichier gflags.exe sur votre ordinateur.
note Le fichier gflags.exe se trouve généralement dans le répertoire suivant : C:\Program Files\Debugging Tools for Windows.
Exécutez le fichier gflags.exe pour démarrer les indicateurs globaux éditeur.
Dans la zone de texte Nom du fichier image , tapez le nom d'image du processus qui héberge le service que vous souhaitez déboguer. Par exemple, si vous souhaitez déboguer un service qui est hébergé par un processus qui a MyService.exe comme nom de l'image, tapez MyService.exe .
Sous destination , cliquez sur pour sélectionner l'option Options de fichiers image .
Sous Options de débogueur image , cliquez sur Activer la case à cocher débogueur .
Dans la zone de texte débogueur , tapez le chemin d'accès complet du débogueur que vous souhaitez utiliser. Par exemple, si vous souhaitez utiliser le débogueur WinDbg pour déboguer un service, vous pouvez taper un chemin complet est semblable à celui-ci : C:\Program Files\Debugging Tools for Windows\windbg.exe
Cliquez sur Appliquer , puis cliquez sur OK pour quitter le l'éditeur indicateurs globaux.
Méthode 2: utiliser l'Éditeur du Registre
Cliquez sur Démarrer , puis cliquez sur Exécuter . La boîte de dialogue Exécuter s'affiche.
Dans la zone Ouvrir , tapez regedit , puis cliquez sur OK pour démarrer l'Éditeur du Registre.
important Cette section, la méthode ou la tâche, contient des étapes qui vous indiquent comment modifier le Registre. Toutefois, des problèmes graves peuvent se produire si modification incorrecte du Registre. Par conséquent, assurez-vous que ces étapes avec soin. Pour la protection supplémentaire, sauvegarder le Registre avant de le modifier. Ensuite, vous pouvez restaurer le Registre si un problème se produit. Pour plus d'informations sur la façon sauvegarder et restaurer le Registre, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
322756
(http://support.microsoft.com/kb/322756/
)
Comment faire pour sauvegarder et restaurer le Registre dans Windows
Dans l'Éditeur du Registre, recherchez et puis cliquez avec le bouton droit sur la sous-clé de Registre suivante :
Pointez sur Nouveau , puis cliquez sur clé . Dans le volet gauche de l'Éditeur du Registre, notez que nouvelle clé # 1 (le nom de la nouvelle sous-clé de Registre) est activée pour le modifier.
Tapez ImageName pour remplacer la nouvelle clé # 1 , puis appuyez sur ENTRÉE.
note ImageName est un espace réservé pour le nom d'image du processus qui héberge le service que vous souhaitez déboguer. Par exemple, si vous souhaitez déboguer un service qui est hébergé par un processus qui a MyService.exe comme nom de l'image, tapez MyService.exe .
Cliquez avec le bouton droit sur la sous-clé de Registre que vous avez créé à étape e.
Pointez sur Nouveau , puis cliquez sur valeur de chaîne . Dans le volet droit de l'Éditeur du Registre, notez que la Nouvelle valeur # 1 , le nom une nouvelle entrée de Registre, est sélectionnée pour modification.
Remplacez nouvelle valeur # 1 débogueur , puis appuyez sur ENTRÉE.
Cliquez avec le bouton droit sur l'entrée de Registre débogueur que vous avez créée à étape h, puis cliquez sur Modifier . La boîte de dialogue Modifier la chaîne s'affiche.
Dans la zone de texte données de la valeur , tapez DebuggerPath et puis cliquez sur OK .
note DebuggerPath est un espace réservé pour le chemin complet du débogueur que vous souhaitez utiliser. Par exemple, si vous souhaitez utiliser le débogueur WinDbg pour déboguer un service, vous pouvez taper un chemin complet est semblable à la suivante :
C:\Progra~1\Debugg~1\windbg.exe
Dans la fenêtre débogueur apparaissent sur votre bureau et d'interagir avec le débogueur, assurez-vous votre service interactif. Si vous n'effectuez votre service interactif, le débogueur démarre, mais vous ne pouvez pas voir et vous ne peut pas émettre commandes. Pour rendre votre service interactives, appliquez l'une des méthodes suivantes :
Méthode 1: utiliser la console de services
Cliquez sur Démarrer , puis pointez sur programmes .
Dans le menu programmes , pointez sur Outils d'administration , puis cliquez sur Services . La console Services s'affiche.
Dans le volet droit des services de la console, cliquez avec le bouton droit sur ServiceName, puis cliquez sur Propriétés .
note ServiceName est un espace réservé pour le nom du service auquel vous souhaitez déboguer.
Sous l'onglet connexion , activez la case à cocher Autoriser le service à interagir avec le bureau sous Compte système local , puis cliquez sur OK .
Méthode 2: utiliser l'Éditeur du Registre
Dans l'Éditeur du Registre, recherchez, puis cliquez sur la sous-clé de Registre suivante :
note Remplacez ServiceName par le nom du service auquel vous souhaitez déboguer. Par exemple, si vous souhaitez déboguer un service nommé MyService, recherchez et cliquez sur la clé de Registre suivante :
Sous le champ Nom dans le volet droit de l'Éditeur du Registre, cliquez avec le bouton droit sur type , puis cliquez sur Modifier . La boîte de dialogue Édition de la valeur DWORD s'affiche.
Modifier le texte dans les données de la valeur zone de texte au résultat de l'opération ou binaire avec la valeur binaire du texte actuel et la valeur binaire, 0x00000100, comme les deux opérandes. La valeur binaire, 0x00000100, correspond à la constante SERVICE_INTERACTIVE_PROCESS qui est définie dans le fichier d'en-tête WinNT.h sur votre ordinateur. Cette constante indique qu'un service est interactif de nature.
Lorsqu'un service démarre, le service communique pour le gestionnaire contrôle des services la durée pendant laquelle le service nécessaire au démarrage (période de délai d'expiration pour le service). Si le Gestionnaire de contrôle des services ne reçoit pas une mention « service démarré » à partir du service pendant cette période d'expiration, le Gestionnaire de contrôle des services termine le processus qui héberge le service. Ce délai est généralement inférieure à 30 secondes. Si vous n'ajustez pas ce délai, le Gestionnaire de contrôle des services termine le processus et le débogueur attaché lorsque vous essayez de déboguer. Pour régler ce délai, procédez comme suit :
Dans l'Éditeur du Registre, recherchez et puis cliquez avec le bouton droit sur la sous-clé de Registre suivante :
Pointez sur Nouveau , puis cliquez sur valeur DWORD . Dans le volet droit de l'Éditeur du Registre, notez que la Nouvelle valeur # 1 (le nom d'une nouvelle entrée de Registre) est sélectionnée pour modification.
Tapez ServicesPipeTimeout pour remplacer la Nouvelle valeur # 1 , puis appuyez sur ENTRÉE.
Cliquez avec le bouton droit sur le ServicesPipeTimeout entrée de Registre que vous créé dans l'étape c et puis cliquez sur Modifier . La boîte de dialogue Édition de la valeur DWORD s'affiche.
Dans la zone de texte données de la valeur , tapez TimeoutPeriod et puis cliquez sur OK
note TimeoutPeriod est un espace réservé pour la valeur de la période Délai d'expiration (en millisecondes) que vous voulez définir pour le service. Par exemple, si vous souhaitez définir le délai à 24 heures (86400000 millisecondes), tapez 86400000 .
Redémarrez l'ordinateur. Vous devez redémarrer l'ordinateur pour Gestionnaire de contrôle des services pour appliquer cette modification.
Démarrez le service Windows. Pour ce faire, procédez comme suit :
Cliquez sur Démarrer , puis pointez sur programmes .
Dans le menu programmes , pointez sur Outils d'administration , puis cliquez sur Services . La console Services s'affiche.
Dans le volet droit des services de la console, cliquez avec le bouton droit sur ServiceName, puis cliquez sur Démarrer .
note ServiceName est un espace réservé pour le nom du service auquel vous souhaitez déboguer.
Avant d'essayer déboguer un service sur un réseau, assurez-vous que les symboles et les fichiers source par le service sont accessibles à partir de l'ordinateur sur lequel le service est exécuté. Pour cela, appliquez l'une des méthodes suivantes :
Accès lecture au moins - autorisations d'accès à tout le monde pour le dossier sur votre ordinateur qui contient les symboles et les fichiers source par le service.
Copiez ces symboles et les fichiers de source par le service sur l'ordinateur où le service fonctionne.
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 824344
(http://support.microsoft.com/kb/824344/en-us/
)
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
Ces informations vous ont-elles aidé ?
Oui
Non
Plutôt
Quel niveau d'effort avez-vous dû personnellement fournir pour utiliser cet article ?
Très faible
Faible
Moyen
Elevé
Très élevé
Dites-nous pourquoi et ce que nous pouvons faire pour améliorer ces informations.
Merci ! Vos commentaires sont très utiles pour l'amélioration de notre contenu d'aide et de support. Si vous avez besoin d'aide complémentaire, veuillez consulter la page d'accueil d'aide et support.