Comment déboguer les services Windows

Traductions disponibles Traductions disponibles
Numéro d'article: 824344 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article étape par étape décrit 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 le service démarre ou vous pouvez configurer le service à démarrer avec le WinDbg débogueur attaché afin que vous pouvez dépanner le service démarrage liés problèmes. Cet article décrit ces deux méthodes.

Configuration requise

Ceci article suppose que vous êtes familiarisé avec les rubriques suivantes :
  • Services Windows
  • Débogueur WinDbg

Attacher le débogueur WinDbg à un service après le démarrage du service

Cette méthode est similaire à la méthode qui vous permet de joindre un le débogueur à un processus et la déboguer un processus.

Utilisez l'ID de processus du processus qui héberge le service que vous souhaitez déboguer

  1. Pour déterminer le processus ID (PID) du processus qui héberge le service que vous souhaitez déboguer, utilisez une des méthodes suivantes.
    • Méthode 1: Utiliser le Gestionnaire des tâches
      1. Avec le bouton droit de la barre des tâches, puis cliquez sur Gestionnaire des tâches. Le Gestionnaire des tâches Windows boîte de dialogue boîte s'affiche.
      2. Cliquez sur le Processus onglet de la Gestionnaire des tâches Windows boîte de dialogue.
      3. Sous Nom de l'image, cliquez sur l'image nom du processus qui héberge le service que vous souhaitez déboguer. Remarque le ID de processus de ce processus comme spécifié par la valeur du correspondant PID champ.
    • Méthode 2: Utiliser l'utilitaire de liste de tâches (tlist.exe)
      1. Cliquez sur Démarrer, puis cliquez sur Exécuter. Le Exécuter boîte de dialogue s'affiche.
      2. Dans le Ouvrir zone, tapez cmd, puis cliquez sur OK.
      3. À l'invite de commandes, modifiez le chemin du répertoire fonction de l'emplacement du fichier tlist.exe sur votre ordinateur.

        Remarque Le fichier tlist.exe se trouve généralement dans le code suivant répertoire : C:\Program Files\Debugging Tools for Windows
      4. À l'invite de commandes, tapez tlist Pour répertorier les noms de l'image et l'ID de tous les processus processus en cours d'exécution sur votre ordinateur.

        Remarque Notez l'ID de processus du processus qui héberge le service que vous avez vous souhaitez déboguer.
  2. À l'invite de commandes, modifiez le chemin d'accès de répertoire pour refléter la emplacement du fichier windbg.exe sur votre ordinateur.

    Remarque Si une invite de commande n'est pas ouverte, suivez les étapes 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.
  3. À l'invite de commandes, tapez WinDbg ? pProcessID /g Pour attacher le débogueur WinDbg le processus qui héberge le service que vous souhaitez déboguer.

    Remarque ProcessID est un espace réservé pour le ID de processus du processus qui héberge le service que vous souhaitez déboguer.

Utilisez le nom de l'image du processus qui héberge le service que vous souhaitez déboguer

Vous pouvez utiliser cette méthode uniquement si l'un en cours d'exécution est instance du processus qui héberge le service que vous souhaitez exécuter. À faire cela, procédez comme suit :
  1. Cliquez sur Démarrer, puis cliquez surExécuter. Le Exécuter boîte de dialogue s'affiche.
  2. Dans le Ouvrir zone, tapezcmd, puis cliquez sur OK Pour ouvrir un invite de commandes.
  3. À l'invite de commandes, modifiez le chemin d'accès de répertoire pour refléter la emplacement du fichier windbg.exe sur votre ordinateur.

    Remarque Le fichier windbg.exe se trouve généralement dans le code suivant répertoire : C:\Program Files\Debugging Tools for Windows.
  4. À l'invite de commandes, tapez WinDbg ?pnImageName /g Pour attacher le débogueur WinDbg le processus qui héberge le service que vous souhaitez déboguer.

    RemarqueImageName est un espace réservé pour le nom de l'image du processus qui héberge le service que vous souhaitez déboguer. Le «-pn "option de ligne de commande spécifie que leImageName argument de ligne de commande est le nom de l'image de un processus.

Démarrez le débogueur WinDbg et l'attacher au processus qui héberge le service que vous souhaitez déboguer

  1. Démarrez l'Explorateur Windows.
  2. Recherchez le fichier windbg.exe sur votre ordinateur.

    Remarque Le fichier windbg.exe se trouve généralement dans le code suivant répertoire : C:\Program Files\Debugging Tools for Windows
  3. Exécutez le fichier windbg.exe conjointement avec le /g commutateur de ligne de commande pour démarrer le WinDbg débogueur. Le /g commutateur de ligne de commande permet au processus de suivi continuer après que le point d'arrêt est défini.
  4. Sur la Fichier menu, cliquez sur Attacher à un processus Pour afficher la Attacher au processus boîte de dialogue zone.
  5. Cliquez pour sélectionner le n?ud qui correspond au processus qui héberge le service que vous souhaitez déboguer, puis cliquez surOK.
  6. Dans la boîte de dialogue qui s'affiche, cliquez sur OuiPour enregistrer les informations de base espace de travail. Notez que vous pouvez maintenant déboguer le code désassemblé 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 liés au démarrage de service.
  1. Configurer les options « Exécution d'un fichier Image ». Pour ce faire, Utilisez une des méthodes suivantes :
    • Méthode 1: Utiliser l'éditeur d'indicateurs globaux (gflags.exe)
      1. Démarrez l'Explorateur Windows.
      2. Localisez le fichier gflags.exe sur votre ordinateur.

        Remarque Le fichier gflags.exe se trouve généralement dans le code suivant répertoire : C:\Program Files\Debugging Tools for Windows.
      3. Exécutez le fichier gflags.exe pour démarrer les indicateurs globaux Éditeur.
      4. Dans le Nom du fichier image zone de texte Tapez le nom de l'image du processus qui héberge le service que vous souhaitez déboguer. Par exemple, si vous souhaitez déboguer un service hébergé par un processus qui a MyService.exe comme nom d'image, type MyService.exe.
      5. Sous Destination, sélectionnez le Options de fichier d'image option.
      6. Sous Options du débogueur image, Cliquez pour sélectionner le Débogueur case à cocher.
      7. Dans le Débogueur zone de texte, tapez le chemin complet du débogueur que vous souhaitez utiliser. Par exemple, si vous Pour utiliser le débogueur WinDbg pour déboguer un service, vous pouvez taper un chemin complet est semblable au suivant : C:\Program Files\Debugging Tools for Windows\windbg.exe
      8. Cliquez sur Appliquer, puis cliquez sur OK Pour quitter l'éditeur d'indicateurs globaux.
    • Méthode 2: Utiliser l'éditeur du Registre
      1. Cliquez sur Démarrer, puis cliquez sur Exécuter. Le Exécuter boîte de dialogue s'affiche.
      2. Dans le Ouvrir zone, tapez Regedit, puis cliquez sur OK Pour démarrer Éditeur du Registre.
      3. Important Cette section, la méthode ou la tâche qui va suivre contient des étapes qui vous indiquent la méthode pour modifier le Registre de Windows. Toutefois, des problèmes sérieux peuvent survenir si vous modifiez le Registre de façon incorrecte. Par conséquent, assurez-vous de suivre ces étapes avec une attention toute particulière. Afin de couvrir votre système d'une protection supplémentaire, veuillez sauvegarder le Registre avant d'intervenir pour y apporter des modifications. Ainsi, si à la suite des modifications un problème devait survenir, vous pourrez toujours restaurer le Registre. Pour obtenir des informations sur la marche à suivre pour sauvegarder ou restaurer la Base de Registre, cliquez sur le lien (numéro) ci-dessous et afficher l'article correspondant dans la Base de connaissances Microsoft :
        322756 Comment sauvegarder et restaurer le Registre dans Windows


        Dans l'éditeur du Registre, recherchez et puis avec le bouton droit la sous-clé de Registre suivante :
        HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
      4. Pointez sur Nouveau, puis cliquez sur Clé. Dans le volet gauche de l'éditeur du Registre, notez que Nouvelle clé #1 (le nom d'une nouvelle sous-clé de Registre) est sélectionné pour la modification.
      5. Type ImageName à remplacer Nouvelle clé #1, puis appuyez sur PERMET D'ENTRER.

        Remarque ImageName est un espace réservé pour le nom de l'image du processus qui héberge le service que vous souhaitez déboguer. Pour exemple, si vous souhaitez déboguer un service hébergé par un processus a MyService.exe comme nom d'image, type MyService.exe.
      6. Cliquez droit sur la sous-clé de Registre que vous avez créé dans étape e.
      7. Pointez sur Nouveau, puis cliquez sur Valeur de chaîne. Dans le volet droit de l'éditeur du Registre, notez qui Nouvelle valeur #1, est le nom d'une nouvelle entrée de Registre sélectionnée pour modification.
      8. Remplacer Nouvelle valeur #1 avec Débogueur, puis appuyez sur ENTRÉE.
      9. Cliquez droit sur le Débogueur Registre entrée que vous avez créé à l'étape h et puis cliquez sur Modifier. Le Modifier la chaîne boîte de dialogue s'affiche.
      10. Dans le Données de la valeur zone de texte, tapez DebuggerPath, puis cliquez sur OK.

        Remarque DebuggerPath est un espace réservé pour le chemin complet du débogueur que vous souhaitez utiliser. Par exemple, si vous Pour utiliser le débogueur WinDbg pour déboguer un service, vous pouvez taper un intégral chemin d'accès est semblable au suivant :
        C:\progra~1\Debugg~1\windbg.exe
  2. Pour la fenêtre du débogueur sur votre bureau, et pour interagir avec le débogueur, rendre votre service interactif. Si vous ne faites pas votre service interactif, le débogueur démarre, mais vous ne pouvez pas Voir qu'et que vous ne pouvez pas émettre des commandes. Pour que votre service interactif, utilisez une des méthodes suivantes :
    • Méthode 1: Utiliser la console Services
      1. Cliquez sur Démarrer, puis pointez sur Programmes.
      2. Sur la Programmes menu, pointez sur Outils d'administration, puis cliquez sur Services. Le Services console s'affiche.
      3. Dans le volet droit de la Servicesde la console, cliquez avec le droit ServiceName, puis cliquez sur Propriétés.

        Remarque ServiceName est un espace réservé pour le nom du service que vous souhaitez déboguer.
      4. Sur la Ouvrez une session onglet, cliquez sur pour sélectionner le Autoriser service à interagir avec le bureau case à cocher sous Compte système local, puis cliquez sur OK.
    • Méthode 2: Utiliser l'éditeur du Registre
      1. Dans l'éditeur du Registre, recherchez et puis cliquez sur le sous-clé de Registre suivante :
        HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ServiceName
        Remarque Remplacer ServiceName avec le nom de le service que vous souhaitez déboguer. Par exemple, si vous souhaitez déboguer un service nommée MyService, localisez et cliquez sur la clé de Registre suivante :
        HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService
      2. Sous le Nom champ dans le volet droit de l'éditeur du Registre, avec le bouton droit Type, puis cliquez sur Modifier. Le Modifier la valeur DWORD boîte de dialogue s'affiche.
      3. Modifier le texte dans le Données de la valeurzone de texte pour le résultat de l'opération binaire avec la valeur binaire de la le texte actuel et la valeur binaire, 0 x 00000100, comme les deux opérandes. Le fichier binaire valeur, 0 x 00000100, correspond à la constante SERVICE_INTERACTIVE_PROCESS qui est défini dans le fichier d'en-tête WinNT.h sur votre ordinateur. Cette constante spécifie qu'un service est interactif dans la nature.
  3. Lorsqu'un service démarre, le service communique avec le Gestionnaire de contrôle de la durée pendant laquelle le service doit avoir à démarrer (le délai d'attente de service période pour le service). Si le Gestionnaire de services ne reçoit pas un Avis de « service démarré » à partir du service dans ce délai, le Gestionnaire de contrôle des services termine le processus qui héberge le service. Ceci délai d'attente est en général moins de 30 secondes. Si vous n'ajustez pas cela délai d'attente, le Gestionnaire de contrôle de Service se termine le processus et le joint le débogueur pendant que vous essayez de déboguer. Pour régler ce délai d'attente période, procédez comme suit :
    1. Dans l'éditeur du Registre, recherchez et puis cliquez droit sur le sous-clé de Registre suivante :
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
    2. Pointez sur Nouveau, puis cliquez sur Valeur DWORD. Dans le volet droit de l'éditeur du Registre, notez que Nouvelle valeur #1 (le nom d'une nouvelle entrée de Registre) est sélectionné pour le modifier.
    3. Type ServicesPipeTimeout à remplacer Nouvelle valeur #1, puis appuyez sur PERMET D'ENTRER.
    4. Cliquez droit sur le ServicesPipeTimeoutentrée de Registre que vous avez créé à l'étape c et puis cliquez sur Modifier. Le Modifier la valeur DWORD boîte de dialogue s'affiche.
    5. Dans le Données de la valeur zone de texte, tapez TimeoutPeriod, puis cliquez sur OK

      Remarque TimeoutPeriod est un espace réservé pour la valeur de la période de délai d'attente (en millisecondes) que vous avez vous souhaitez définir pour le service. Par exemple, si vous souhaitez définir le délai d'attente période de 24 heures (86400000 millisecondes), type 86 400 000.
    6. Redémarrez l'ordinateur. Vous devez redémarrer l'ordinateur pour Service Control Manager pour appliquer cette modification.
  4. Démarrez le service Windows. Pour ce faire, procédez comme suit :
    1. Cliquez sur Démarrer, puis pointez sur Programmes.
    2. Sur la Programmes menu, pointez sur Outils d'administration, puis cliquez sur Services. Le Services console s'affiche.
    3. Dans le volet droit de la Servicesde la console, cliquez avec le droit ServiceName, puis cliquez sur Démarrer.

      Remarque ServiceName est un espace réservé pour le nom du service que vous souhaitez déboguer.

Résolution des problèmes

Avant que vous essayez de déboguer un service sur un réseau, assurez-vous que les symboles et les fichiers source qui utilise le service sont accessible depuis l'ordinateur où le service s'exécutera. Pour ce faire, utilisez une des méthodes suivantes :
  • Accorder des autorisations d'accès en lecture au moins à tout le monde pour le dossier sur votre ordinateur qui contient les symboles et les fichiers source qui utilise le service.
  • Copiez ces symboles et les fichiers source qui utilise le service sur l'ordinateur où le service sera Exécutez.

Références

Pour télécharger les outils et utilitaires mentionnés Dans cet article, reportez-vous au site Web de Microsoft à l'adresse suivante :
Outils de débogage pour Windows : vue d'ensemble
http://www.Microsoft.com/whdc/devtools/debugging/default.mspx
Pour plus d'informations, visitez le site MSDN Microsoft Developer Sites Web de Network (MSDN) :
Débogueur WinDbg
http://www.Microsoft.com/whdc/DevTools/Debugging/installx86.mspx
Services
http://msdn2.Microsoft.com/en-us/library/ms685141.aspx
En utilisant les indicateurs globaux utilitaire
http://msdn2.Microsoft.com/en-us/library/ms792858.aspx

Propriétés

Numéro d'article: 824344 - Dernière mise à jour: dimanche 7 octobre 2012 - Version: 8.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professionnel
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
  • Microsoft Windows XP Édition familiale
  • Microsoft Windows XP Professional
Mots-clés : 
kbimghlp kbregistry kbservice kbdebug kbmisctools kbhowtomaster kbmt KB824344 KbMtfr
Traduction automatique
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
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.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com