Numéro d'article: 286350 - Dernière mise à jour: mardi 4 décembre 2007 - Version: 9.4

Comment utiliser ADPlus pour dépanner « blocages » et « incidents »

Sommaire

Agrandir tout | Réduire tout

Résumé

ADPlus est un outil des services de support technique (PSS) de Microsoft capable de dépanner tout processus ou application qui cesse de répondre (blocage) ou tombe en panne (incident). Vous pouvez fréquemment employer ADPlus (ADPlus.vbs) comme outil de remplacement du moniteur d'exception (6.1/7.1) de Microsoft Internet Information Server (IIS) et pour le vidage de processus en mode utilisateur. Le support technique se sert souvent de ces deux outils pour isoler la cause de non-réponse (blocage) ou de fermeture de façon inattendue (incident) d'un processus dans un environnement DNA de Microsoft Windows.

Plus d'informations

Configuration requise

La configuration minimale requise pour ADPlus est la suivante :
  • Service Pack 4 Windows NT 4.0 ou version ultérieure
  • Windows Scripting Host (WSH) version 5.6 ou ultérieure
  • Au minimum 10 Mo d'espace disponible sur le disque ou le partage réseau dans lequel ADPlus placera ses fichiers de sortie.
  • Outils Microsoft de débogage pour Windows installés

Nouvelles fonctionnalités de ADPlus version 6.0

ADPlus version 6.0 a été complètement réécrit. L'outil compte de nouveaux commutateurs et dispose de nouvelles capacités. Vous pouvez maintenant le configurer au moyen d'un fichier de configuration externe. Pour afficher les informations mises à jour relatives aux nouvelles fonctionnalités et aux nouveaux commutateurs, reportez-vous au fichier d'aide du débogueur (Debugger.chm) fourni avec le package des débogueurs de Microsoft Windows. Pour obtenir le package, reportez-vous au site Web de Microsoft à l'adresse suivante (en anglais) :
http://www.microsoft.com/whdc/devtools/debugging/default.mspx (http://www.microsoft.com/whdc/devtools/debugging/default.mspx)
Debugger.chm est situé dans le même dossier que ADPlus.vbs. Pour trouver la documentation de ADPlus, cliquez sur l'onglet Sommaire, puis cliquez sur les éléments suivants :
  • Using Debugging Tools for Windows
  • Crash Dump Files
  • User-Mode Dump Files
  • Creating a User Mode Dump File
  • ADPlus
Vous trouverez également de la documentation à propos de ADPlus en cliquant sur l'onglet Index. Tapez ADPlus dans la zone de texte du mot clé.

Que fait ADPlus ?

ADPlus est un script Microsoft Visual Basic qui fonctionne à partir de la console. Il automatise le débogueur Microsoft CDB pour produire des fichiers d'image mémoire et des fichiers journaux contenant des sorties de débogage d'un ou de plusieurs processus. Chaque fois que vous exécutez ADPlus, des informations du débogage (il s'agit de fichiers d'image mémoire et de fichiers texte qui contiennent des informations utiles pour le débogage) sont écrites dans un dossier dont le nom est unique (par exemple C:\Temp\Crash_Mode__Date_22-01-2001__Time_09-41-08) sur le système de fichiers local ou sur un partage de réseau distant. En outre, chaque fichier créé par ADPlus se voit attribuer un nom unique (par exemple, PID-1708__Inetinfo.exe__Date_22-01-2001__Time_09-41-08.log) pour éviter que des fichiers plus anciens ne soient écrasés par des nouveaux.

ADPlus fonctionne avec n'importe quel processus ou service en mode utilisateur telles que des applications Internet Information Services (IIS), Microsoft Transaction Server (MTS) ou Microsoft COM+.

Certaines fonctionnalités de ADPlus sont répertoriées ci-après :
  • ADPlus emploie les débogueurs Microsoft les plus récents pour davantage de fonctionnalités, de vitesse et de fiabilité.
  • Lorsqu'il effectue un vidage de la mémoire pour plusieurs processus, ADPlus le réalise en mode asynchrone de sorte que chaque processus est gelé et capturé au même moment. Cette méthode vous permet de récupérer un "instantané" de l'application complète au moment où ADPlus est exécuté. Outre l'ensemble des processus qui composent une application, vous devez également capturer les processus que l'application utilise au même instant, afin de saisir l'état de l'application au moment où le problème se présente. Ceci est particulièrement important pour des applications qui effectuent des appels de procédures à distance vers d'autres processus.
  • ADPlus utilise une interface de ligne de commande. Ne disposant pas d'une interface graphique utilisateur, ADPlus peut s'exécuter en mode silencieux (sans affichage de boîtes de dialogue) à partir d'une interface de commande distante (une interface de commande contrôlée à distance à l'aide de Remote.exe). En mode silencieux, les erreurs s'affichent dans la console et sont écrites dans le journal des événements. Pour plus d'informations sur la façon d'exécuter ADPlus à partir d'une interface de commande distante, reportez-vous à la section "Scénarios d'utilisation" du présent article.
  • Si vous employez le commutateur -notify alors que ADPlus surveille les incidents et que le service Windows Messenger est démarré, ADPlus peut alerter un utilisateur ou un ordinateur à propos d'un incident au moyen du service Windows Messenger.
  • En cas d'incident alors qu'il surveille un processus en mode Crash, ADPlus envoie au journal des événements des informations importantes sur le type d'incident.
  • ADPlus prend en charge le déploiement de XCOPY. Si vous installez le package de débogueurs fourni avec ADPlus sur un ordinateur de test, vous pouvez copier le dossier d'installation des débogueurs sur un autre ordinateur. En outre, avec ADPlus, il n'est pas nécessaire d'enregistrer des composants COM (Component Object Model) personnalisés sur le système. C'est pourquoi vous pouvez employer ADPlus sur des serveurs de production dont la configuration logicielle est verrouillée. Pour supprimer ADPlus, supprimez le dossier dans lequel il a été installé ou copié.

Quand devez-vous utiliser ADPlus ?

ADPlus a été conçu pour fournir aux professionnels du support technique de Microsoft les informations de débogage dont ils ont besoin pour isoler la cause des problèmes qui se produisent dans des environnements complexes.

Utilisez ADPlus pour capturer des informations de débogage si vous rencontrez les problèmes suivants :
  • Processus qui cessent de répondre.
  • Processus qui consomment 100 % de la CPU sur un ordinateur monoprocesseur, 50 % sur un ordinateur à deux processeurs, 25 % sur un ordinateur à quatre processeurs, et ainsi de suite.
  • Processus qui se bloquent ou se ferment de façon inattendue.

Quand ne devez-vous pas utiliser ADPlus ?

N'utilisez pas ADPlus dans les situations suivantes :
  • Si vous devez dépanner un programme ou un processus qui se ferme de façon inattendue au cours du démarrage. ADPlus ne s'utilise qu'avec des processus ayant correctement démarré. Pour dépanner des processus qui se ferment de façon inattendue au démarrage, le vidage des processus en mode utilisateur peut être une meilleure solution. Pour plus d'informations sur le vidage des processus en mode utilisateur, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
    253066  (http://support.microsoft.com/kb/253066/ ) Disponibilité du Service Release 2 de la phase 3 des outils de support OEM
    Vous pouvez également déboguer manuellement le processus en utilisant les débogueurs les plus récents. Pour plus d'informations sur les débogueurs les plus récents, reportez-vous au site Web de Microsoft à l'adresse suivante (en anglais) :
    http://www.microsoft.com/whdc/devtools/debugging/default.mspx (http://www.microsoft.com/whdc/devtools/debugging/default.mspx)
  • L'utilisation de ADPlus en mode Crash affecte sensiblement les performances. En général, cela provient des DLL (bibliothèques de liens dynamiques) ou de programmes qui émettent de nombreuses exceptions EH Microsoft Visual C++. (Ces exceptions se produisent lorsque vous utilisez l'instruction C++ throw ou des blocs try/catch.) Des programmes qui écrivent beaucoup d'informations vers le flux de données en sortie de débogage peuvent également provoquer une baisse des performances. Dans la grande majorité des cas, ADPlus n'a pas d'impact notable sur les performances lorsqu'il est exécuté en mode Crash.

Où se procurer ADPlus ?

ADPlus est fourni avec les Outils Microsoft de débogage pour Windows les plus récents. Pour obtenir les outils de débogage Microsoft pour Windows les plus récents, reportez-vous au site Web de Microsoft à l'adresse suivante (en anglais) :
http://www.microsoft.com/whdc/devtools/debugging/default.mspx (http://www.microsoft.com/whdc/devtools/debugging/default.mspx)

Comment ADPlus fonctionne-t-il ?

ADPlus propose deux modes de fonctionnement :
  • Le mode "Hang" permet de dépanner un processus bloqué, une utilisation à 100 % de la CPU ainsi que d'autres problèmes qui n'impliquent pas un incident. Lorsque vous utilisez ADPlus en mode Hang, vous devez attendre que le ou les processus aient cessé de répondre pour pouvoir exécuter le script (contrairement au mode Crash, le mode Hang n'est pas persistant).
  • Le mode Crash permet le dépannage d'incidents qui se traduisent par des erreurs Dr. Watson ou de tout autre type d'erreur qui provoque la fermeture inattendue d'un programme ou d'un service. Si vous l'employez en mode Crash, vous devez démarrer ADPlus avant que l'incident ne se produise. Le commutateur -notify vous permet de configurer ADPlus pour qu'il avertisse un administrateur ou un ordinateur en cas d'incident.

Mode Hang (blocage)

Dans ce mode, ADPlus produit immédiatement des images mémoire complètes pour tous les processus spécifiés sur la ligne de commande, une fois le script terminé. Chaque fichier .dmp créé est placé dans un dossier qui contient l'indication de la date et de l'heure d'exécution de ADPlus. Chaque nom de fichier contient le nom du processus, l'ID du processus ainsi que la date et l'heure d'exécution de ADPlus. Le processus est gelé pendant le vidage de sa mémoire dans un fichier. Une fois le fichier d'image mémoire créé, le processus reprend en utilisant un attachement/détachement non invasif au débogueur CDB.

Conseil d'utilisation Vous pouvez employer ADPlus en mode Hang à la place de Userdump.exe pour vider la mémoire d'un ou de plusieurs processus. En outre, le mode Hang fonctionne au sein d'une session Terminal Server.

Mode Crash (incident)

Dans ce mode, ADPlus attache le débogueur CDB à tous les processus spécifiés sur la ligne de commande. ADPlus configure automatiquement le débogueur pour surveiller les types d'exceptions suivants :
  • Handle non valide
  • Instruction non conforme
  • Division d'un entier par zéro
  • Division par zéro en virgule flottante
  • Dépassement de capacité pour un entier
  • Séquence de verrouillage non valide
  • Violation d'accès
  • Dépassement de pile
  • Exception EH C++
  • Exception inconnue
Vous pouvez remplacer le moniteur d'exception IIS ou Userdump.exe par ADPlus en mode Crash si vous dépannez ces types d'exceptions. Parce qu'il utilise un attachement "invasif" via le débogueur CDB, le mode Crash ne fonctionne pas dans une session Terminal Server de Microsoft Windows NT 4.0 ou Windows 2000. En revanche, seul le mode Hang fonctionne dans une session Terminal Server sur ces systèmes d'exploitation, car ils nécessitent l'utilisation d'un attachement "non invasif". Pour plus d'informations sur la façon de réaliser un attachement invasif et non invasif pour un processus avec les débogueurs les plus récents, reportez-vous à la section "Utilisation des outils de débogage pour Windows : attachement à un processus d'exécution (Mode utilisateur)" dans l'aide des débogueurs.

Remarque Le mode Crash est pris en charge dans une session Terminal Server sur les systèmes d'exploitation Microsoft XP et Microsoft Windows Server 2003.

Lorsque ADPlus est exécuté en mode Crash, un débogueur demeure attaché à chacun des processus spécifiés sur la ligne de commande pour toute la durée de ce processus et jusqu'à ce qu'une exception irrécupérable soit identifiée et que le processus se ferme de manière inattendue ou jusqu'à ce qu'un utilisateur emploie la combinaison de touches CTRL+C pour détacher le débogueur de ce processus. Pour détacher manuellement le débogueur du processus, vous devez agrandir la fenêtre du débogueur, puis appuyer sur CTRL+C pour provoquer une interruption dans le débogueur.

Si vous appuyez sur CTRL+C, ADPlus intercepte cette commande, commence à lister les piles de tous les threads dans un fichier journal, puis produit un enregistrement réduit de l'image mémoire du processus avant de le détacher du débogueur. Puisqu'un mode Crash exécute un attachement invasif, le processus est arrêté une fois le débogueur détaché. Vous devez redémarrer le processus. S'il s'agit d'un processus MTS ou COM+, un redémarrage du processus est automatiquement effectué lors du prochain appel à un composant de ce package.

Exceptions de première chance

Chaque type d'exception (comme une violation d'accès ou un dépassement de capacité de la pile) peut être généré au niveau du débogueur en tant qu'exception de première chance ou exception de deuxième chance. Par définition, une exception de première chance n'est pas irrécupérable, sauf si elle n'est pas gérée correctement au moyen d'un gestionnaire d'erreurs. Si ce problème se produit, l'exception est à nouveau générée comme une exception de deuxième chance (seul un débogueur peut gérer ce type d'erreur). Si aucun débogueur ne gère une exception de deuxième chance, l'application se ferme.

Pour plus d'informations sur les exceptions de première et de deuxième chance et sur la gestion structurée des exceptions (SEH) de Windows NT, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
105675  (http://support.microsoft.com/kb/105675/ ) Gestion des exceptions de première et de deuxième chance
Par défaut, lorsqu'il détecte une exception de première chance (récupérable) pour tous les types d'exceptions hormis les exceptions inconnues et EH, ADPlus mène les actions suivantes :
  1. Il fait marquer une pause au processus pour enregistrer dans le fichier journal la date et l'heure auxquelles l'exception s'est produite pour le processus surveillé.
  2. Il enregistre dans le fichier journal l'ID du thread et la pile des appels associée au thread qui a généré l'exception pour le processus surveillé.
  3. Il produit pour le processus un enregistrement réduit de l'image mémoire portant un nom unique (.dump -u /m) au moment où l'exception s'est produite, puis permet la reprise du processus.
Remarque Par défaut, ADPlus ne produit pas d'enregistrement réduit de l'image mémoire unique pour les exceptions EH et inconnues de première chance, car celles-ci interviennent fréquemment. De telles exceptions sont généralement traitées par un code de gestion des erreurs d'un processus ou d'une DLL. Dans la mesure où elles sont gérées, elles ne deviennent pas des exceptions de deuxième chance (non gérées) et ne mettent pas fin au processus.

Vous pouvez cependant configurer ADPlus de sorte qu'il produise des images mémoire réduites et uniques pour les exceptions EH et inconnues de première chance. Pour cela, vous devez personnaliser ADPlus à l'aide d'un fichier de configuration.

Exceptions de deuxième chance

Si ADPlus détecte une exception de deuxième chance (irrécupérable) pour tous les types d'exceptions (y compris les exceptions EH et inconnues), il déclenche les actions suivantes :
  1. Il fait marquer une pause au processus pour enregistrer dans le fichier journal la date et l'heure auxquelles l'exception s'est produite pour le processus surveillé.
  2. Il enregistre dans le fichier journal l'ID du thread et la pile des appels associée au thread qui a généré l'exception pour le processus surveillé.
  3. Il fournit une image mémoire complète du processus au moment où l'exception irrécupérable s'est produite, puis quitte le débogueur. Cette action détruit le processus.
Remarque Pour permettre leur analyse des images mémoire, les professionnels du Support technique de Microsoft doivent récupérer des copies des composants personnalisés ou des DLL ainsi que des fichiers de symboles qui leur sont associés. Pour plus d'informations sur la façon de créer des fichiers de symboles associés à vos DLL, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft.
121366  (http://support.microsoft.com/kb/121366/ ) Fichiers PDB et DBG ? Que sont-ils et comment fonctionnent-ils ?
291585  (http://support.microsoft.com/kb/291585/ ) Comment faire pour créer des symboles de débogage pour une application Visual C++
Pour plus d'informations sur la façon d'obtenir des symboles pour les produits Microsoft (nécessaires pour analyser les images mémoire avec les débogueurs), reportez-vous au site Web de Microsoft à l'adresse suivante (en anglais) :
http://www.microsoft.com/whdc/DevTools/Debugging/symbolpkg.mspx (http://www.microsoft.com/whdc/DevTools/Debugging/symbolpkg.mspx)

Commutateurs de ligne de commande de ADPlus

Pour utiliser ADPlus, vous devez spécifier au script un ensemble de commutateurs de ligne de commande ou d'arguments. ADPlus nécessite au minimum deux commutateurs : un qui précise le mode de fonctionnement et un autre qui indique le processus cible sur lequel l'opération doit être menée.

Les commutateurs présentés ci-après sont les plus fréquemment utilisés. Vous pouvez également afficher la liste complète des commutateurs en exécutant ADPlus ?help ou en affichant le fichier d'aide des débogueurs (Debugger.chm).
  • -hang
    Ce commutateur configure ADPlus pour qu'il s'exécute en mode Hang. Vous devez employer ce commutateur avec les commutateurs -iis, -pn ou -p. Vous ne pouvez pas utiliser -hang avec le commutateur -crash.

    Remarque Lorsqu'il est exécuté en mode Hang, vous devez démarrer ADPlus après que le processus a cessé de répondre ou lorsqu'il consomme un pourcentage élevé de la CPU.
  • -crash
    Ce commutateur configure ADPlus pour qu'il s'exécute en mode Crash. Vous devez employer ce commutateur avec les commutateurs -iis, -pn ou -p. Vous ne pouvez pas utiliser -crash avec le commutateur -hang.

    Remarque Lorsqu'il est exécuté en mode Crash, vous devez démarrer ADPlus avant que le processus ne se ferme de façon inattendue ou devienne instable.
  • -pn nom du processus
    Le commutateur -pn permet d'indiquer un nom de processus que ADPlus doit analyser. Pour indiquer plusieurs processus, vous devez employer plusieurs commutateurs -pn nom du processus. Par exemple :
    -pn process1.exe -pn process2.exe
  • -p ID du processus
    Le commutateur -p permet d'indiquer l'ID d'un processus (PID) que ADPlus doit analyser. Pour indiquer plusieurs processus, employez plusieurs commutateurs -p PID. Par exemple :
    -p 1896 -p 1702
  • -sccommande spawning
    À la différence des commutateurs -pn et -p, qui indiquent les processus qui sont déjà en cours d'exécution auxquels joindre le débogueur, le commutateur -sc définit l'application et les paramètres à démarrer dans le débogueur. Par exemple :
    -sc "c:\windows\system32\notepad.exe
  • -iis
    Le commutateur -iis est utilisé pour le débogage des serveurs qui exécutent Internet Information Server (IIS) 4.0 ou une version ultérieure. S'il est utilisé avec le commutateur -iis, ADPlus surveille toutes les applications IIS intra-processus (Inetinfo.exe) et hors processus (Mtx.exe/Dllhost.exe). Vous pouvez utiliser le commutateur -iis avec le commutateur -pn ou le commutateur -p, ou vous pouvez l'utiliser seul pour analyser IIS et toutes les applications MTS/COM+ exécutées en mode Crash ou en mode Hang.

    Si vous tentez d'analyser un serveur qui exécute IIS 3.0 ou une version antérieure, utilisez le commutateur -pn et précisez Inetinfo.exe comme processus à surveiller.
  • -notify nom d'ordinateur ou nom d'utilisateur
    Ce commutateur n'est valide que si ADPlus est exécuté en mode Crash. Il permet à ADPlus d'avertir l'utilisateur ou l'ordinateur dont le nom est spécifié en cas d'un incident. Lorsque le débogueur se détache du processus en raison d'une exception de deuxième chance ou parce qu'un utilisateur a appuyé sur CTRL+C pour arrêter un débogage, une notification est adressée à l'utilisateur ou à l'ordinateur distant via le service local d'affichage des messages. Cette notification n'apparaît que si ce service est démarré sur l'ordinateur en cours de débogage.
  • -quiet
    Ce commutateur indique à ADPlus de supprimer toutes les boîtes de dialogue modales. Ce commutateur est utile lorsque vous exécutez ADPlus à partir d'une interface de commande distante dans laquelle des boîtes de dialogue modales peuvent mettre ADPlus indéfiniment dans l'attente qu'un utilisateur clique sur OK. Pour obtenir de meilleurs résultats, assurez-vous que ce commutateur est le premier transmis à ADPlus.vbs.
  • -o répertoire de sortie
    Ce commutateur indique à ADPlus où placer les fichiers de sortie du débogage. Si vous utilisez des noms de fichiers longs, vous devez les placer entre guillemets doubles. Vous pouvez également utiliser un chemin UNC (\\serveur\partage). Dans ce cas, ADPlus crée un dossier immédiatement en dessous du chemin UNC que vous venez d'indiquer. Le dossier est nommé pour le serveur dans lequel ADPlus est exécuté (par exemple, \\serveur\partage\Web1 ou \\serveur\partage\Web2). Ce commutateur est utile si ADPlus est exécuté sur plusieurs ordinateurs d'une batterie de serveurs Web dont toutes les sorties sont placées sur le même partage réseau.

Exécution de ADPlus pour la première fois

Par défaut, les débogueurs sont installés dans le dossier C:\Program Files\Debugging Tools for Windows. Pour changer de dossier d'installation, exécutez une installation personnalisée des débogueurs, et indiquez un dossier différent. S'il s'agit également d'une installation normale, copiez le contenu du dossier Program Files\Debugging Tools for Windows vers le nouveau dossier.

Pour exécuter ADPlus, ouvrez une interface de commande, basculez vers le dossier dans lequel les débogueurs ont été installés ou copiés, puis tapez ADPlus.vbs.

Vous pouvez être invité à changer d'interpréteur de script par défaut en remplaçant Wscript.exe par Cscript.exe. Microsoft recommande fortement de laisser ADPlus configurer CSCript comme interpréteur de script par défaut.

Syntaxe

ADPlus utilise la syntaxe suivante : ADPlus.vbs mode de fonctionnement processus à surveiller commutateurs facultatifsmode de fonctionnement se remplace par le commutateur -hang ou -crash
processus à surveiller se remplace par -iis, -pn processus.exe ou -p PID
commutateurs facultatifs se remplace par -notify, -o ou -quiet.

Préparation du serveur pour un débogage en mode Crash

Avant d'exécuter ADPlus en mode Crash, vous devez préparer le serveur pour qu'il récupère le plus grand nombre d'informations des sessions de débogage en mode Crash de ADPlus.

Étapes de préparation d'un serveur Windows 2000 pour le débogage en mode Crash

  1. Installez les symboles de Windows 2000 SP1 ou SP2 dans le dossier C:\WINNT\Symbols de vos serveurs. Vous pouvez télécharger les symboles à partir des sites Web de Microsoft aux adresses suivantes :
    Service Pack 1 Windows 2000
    http://www.microsoft.com/windows2000/downloads/servicepacks/sp1/debug/default.mspx (en anglais) (http://www.microsoft.com/windows2000/downloads/servicepacks/sp1/debug/default.mspx)

    Service Pack 2 Windows 2000
    http://www.microsoft.com/windows2000/downloads/servicepacks/sp2/debug/default.mspx (en anglais) (http://www.microsoft.com/windows2000/downloads/servicepacks/sp2/debug/default.mspx) Après avoir téléchargé Sp1sym.exe ou Sp2sym.exe, exécutez le fichier à partir du dossier désigné.
  2. À l'invite de la procédure d'installation, procédez à une extraction des fichiers dans un nouveau dossier temporaire, par exemple C:\Sp1sym ou C:\Sp2sym, ou vers un lecteur ou un dossier disposant d'un espace disque suffisant.
  3. Exécutez C:\Sp1sym\Support\Debug\Symbols\i386\Symbols_spexe ou C:\Sp2sym\Support\Debug\Symbols\i386\Symbols_spexe (où C:\Sp1sym ou C:\Sp2sym représente le dossier dans lequel vous avez extrait les fichiers à l'étape précédente).
  4. À l'invite du CLUF, cliquez sur Oui.
  5. À l'invite de la procédure d'installation, indiquez le dossier dans lequel vous pouvez extraire les fichiers, cliquez sur C:\WINNT\Symbols, puis sur OK. Notez qu'un nouveau dossier C:\WINNT\Symbols apparaît. Ce dossier contient différents sous-dossiers portant des noms comme DLL et EXE.
  6. Copiez les symboles associés à vos DLL personnalisées ainsi que les correctifs postérieurs à SP1 ou SP2 dans le dossier C:\WINNT\Symbols\Dll.
  7. Copiez les symboles associés à vos fichiers .exe personnalisés dans le dossier C:\WINNT\Symbols\Exe. Vous devez également récupérer les fichiers .pdb ou .dbg auprès de vos développeurs, puis placer ces fichiers dans le dossier C:\WINNT\Symbols\Dll.
  8. Remplacez tous les fichiers .dbg ou .pdb déjà existants dans le dossier C:\WINNT\Symbols\Dll par les versions provenant de vos correctifs.

    Remarque Vous pouvez utiliser la version la plus récente de Winzip pour ouvrir les packages de correctifs et extraire les symboles du sous-dossier \Debug. Le sous-dossier \Debug est présent dans chaque programme d'installation automatique des correctifs.
  9. Créez une variable d'environnement _NT_SYMBOL_PATH, puis définissez-la comme égale à C:\WINNT\Symbols. Il peut s'agir d'une variable système ou d'une variable d'environnement de l'utilisateur.

Étapes de préparation d'un serveur Windows NT 4.0 pour le débogage en mode Crash

  1. Supposons que vous exécutez le Service Pack 6a Windows NT 4.0. Installez les symboles du Service Pack 6a Windows NT 4.0 dans le dossier C:\WINNT\Symbols de vos serveurs.
    Pour plus d'informations sur Windows NT 4.0 Service Pack 6/6a, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
    241211  (http://support.microsoft.com/kb/241211/ ) Liste des bogues corrigés dans le Service Pack 6/6a pour Windows NT 4.0 (Partie 1)
    Après avoir téléchargé Sp6symi.exe, exécutez-le à partir du dossier désigné.
  2. À l'invite de la procédure d'installation, procédez à l'extraction des fichiers vers le dossier C:\WINNT (ou le dossier approprié, si les symboles n'ont pas été installés dans C:\WINNT). Notez qu'un nouveau dossier C:\WINNT\Symbols apparaît. Il est composé de différents sous-dossiers nommés DLL, EXE et autres.
  3. Copiez les sous-dossiers du dossier C:\WINNT\Symbols\IIS4 vers C:\WINNT\Symbols. Cliquez sur Oui lorsque vous êtes invité à remplacer les fichiers.
  4. Copiez les symboles associés à vos DLL personnalisées ainsi que les correctifs postérieurs à SP6a dans le dossier C:\WINNT\Symbols\Dll.
  5. Copiez les symboles associés à vos fichiers .exe personnalisés dans le dossier C:\WINNT\Symbols\Exe. Vous devez également récupérer les fichiers .pdb ou .dbg auprès de vos développeurs, puis placer ces fichiers dans le dossier C:\WINNT\Symbols\Dll.
  6. Remplacez tous les fichiers .dbg ou .pdb déjà existants dans le dossier C:\WINNT\Symbols\Dll par les versions provenant de vos correctifs.

    Remarque Vous pouvez utiliser la version la plus récente de Winzip pour ouvrir les packages de correctifs et extraire les symboles du sous-dossier \Debug. Ce sous-dossier est inclus dans chaque programme d'installation automatique des correctifs.
  7. Créez une variable d'environnement _NT_SYMBOL_PATH, puis définissez-la comme égale à C:\WINNT\Symbols. Il peut s'agir d'une variable système ou d'une variable d'environnement de l'utilisateur.
Bien que vous ne soyez pas tenu de télécharger et d'installer des symboles sur les serveurs que vous déboguez, cette opération est fortement recommandée. Lorsque vous téléchargez et installez des symboles sur le serveur, la sortie que les fichiers journaux capturent s'avère bien plus utile pour Microsoft PSS.

Pour plus d'informations sur la façon d'obtenir des symboles de Microsoft Debug, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
268343  (http://support.microsoft.com/kb/268343/ ) Umdhtools.exe : Comment faire pour utiliser Umdh.exe afin de rechercher des fuites de mémoire
Une fois vos serveurs configurés, vous pouvez exécuter ADPlus en mode Crash. Ce mode est décrit dans la section "Scénarios caractéristiques d'utilisation de ADPlus".

Scénarios caractéristiques d'utilisation de ADPlus

Cette section décrit quelques-uns des scénarios classiques où vous devrez peut-être exécuter ADPlus.

Un processus cesse de répondre ou consomme 100 % de l'UC

Dans ce scénario, un processus peut consommer de manière aléatoire 100 % de l'UC pendant des périodes soutenues ou permanentes. Exécutez ADPlus en mode Hang pour obtenir une image mémoire du ou des processus consommateurs de la CPU après que le problème s'est produit. Par exemple, utilisez l'une des syntaxes de commande suivantes :
ADPlus -hang -p 1896
Cette commande permet d'exécuter ADPlus en mode Hang et de produire un fichier d'image mémoire complète du processus dont le PID est 1896.

ADPlus -hang -pn monapp.exe
Cette commande permet d'exécuter ADPlus en mode Hang et de produire des fichiers d'images mémoire complètes de tous les processus dont le nom est Monapp.exe.

ADPlus -hang -iis -pn monapp.exe -o c:\temp
Cette commande exécute ADPlus en mode Hang et produit des fichiers d'images mémoire complète de IIS, de toutes les instances de Mtx.exe ou de Dllhost.exe et de tous les processus dont le nom est Monapp.exe. Il place ensuite les fichiers d'images mémoire dans le dossier C:\Temp.
Si vous exécutez ADPlus en mode Hang alors que l'UC est utilisée à 100 %, l'outil génère les fichiers d'images mémoire du ou des processus que vous avez spécifiés sur la ligne de commande.

Remarque Dans de rares situations, le débogueur peut ne pas être en mesure de s'attacher au processus en cas d'utilisation à 100 % de la CPU ou de blocage. Si vous exécutez ADPlus en mode Hang après l'arrivée du problème, l'outil peut ne pas produire de fichiers d'images mémoire. Dans ces scénarios, il serait préférable d'attacher le débogueur avant que le problème ne se produise. Pour cela, utilisez l'une des syntaxes de commande suivantes pour exécuter ADPlus en mode Crash :
ADPlus -crash -p 1896
Cette commande exécute ADPlus en mode Crash pour un processus dont le PID est 1896. ADPlus attend qu'une exception se produise ou qu'un utilisateur appuie sur CTRL+C dans la fenêtre réduite du débogueur pour générer un fichier d'image mémoire et pour détacher le débogueur.

ADPlus -crash -pn monapp.exe
Cette commande exécute ADPlus en mode Crash pour un processus intitulé Monapp.exe. ADPlus attend qu'une exception se produise ou qu'un utilisateur appuie sur CTRL+C dans la fenêtre réduite du débogueur pour générer un fichier d'image mémoire et pour détacher le débogueur.

ADPlus -crash -iis -pn monapp.exe -o c:\temp
Cette commande exécute ADPlus en mode Crash pour toutes les instances des processus intitulés Monapp.exe et Inetinfo.exe, ainsi que pour toutes les instances de Mtx.exe ou de Dllhost.exe. ADPlus attend qu'une exception se produise ou qu'un utilisateur appuie sur CTRL+C dans une ou plusieurs des fenêtres réduites des débogueurs pour générer un ou plusieurs fichiers d'images mémoire et pour détacher le ou les débogueurs. ADPlus place les fichiers d'images mémoire et les fichiers journaux dans le dossier C:\Temp.
Puis, après avoir constaté un blocage du processus ou sa consommation à 100 % de la CPU, l'utilisateur peut appuyer sur CTRL+C dans la ou les fenêtres de débogueurs réduites générées par ADPlus pour que le débogueur puisse générer un fichier d'image mémoire pour le processus ou les processus en question.

Remarque Par défaut, ADPlus ne produit que des enregistrements réduits de l'image mémoire lorsque l'utilisateur appuie sur CTRL+C. Ce paramétrage permet d'économiser l'espace disque. Dans ce scénario, il peut être utile de configurer ADPlus pour qu'il génère un fichier d'image mémoire complète lorsque l'utilisateur appuie sur CTRL+C. Pour cela, utilisez le commutateur ?CTCF. En outre, il est souvent utile de capturer un fichier journal des performances ou un fichier journal de surveillance du système pour la période courant jusqu'au et incluant le moment où la condition d'utilisation de la CPU à 100 % est survenue. Ce fichier journal doit au minimum capturer les objets suivants toutes les 1 à 5 secondes :
  • Mémoire
  • Processus
  • Processeur
  • Système
  • Thread

Fermeture inattendue d'un processus

Dans ce scénario, un processus peut se fermer (ou tomber en panne) de façon inattendue. Avant que le problème ne se produise, exécutez ADPlus en mode Crash afin d'obtenir une image mémoire du ou des processus qui se ferment. Par exemple, utilisez l'une des syntaxes de commande suivantes :
ADPlus -crash -iis
Cette commande exécute ADPlus en mode Crash et aboutit à l'attachement du débogueur CDB à Inetinfo.exe et à tous les processus Mtx.exe ou Dllhost.exe exécutés sur l'ordinateur. ADPlus attend ensuite que des exceptions de première et de deuxième chance se produisent. Par défaut, ADPlus place tous les fichiers dans un sous-dossier du dossier d'installation, car le commutateur -o a été omis.

ADPlus -quiet -crash -iis -notify ordinateur distant -o c:\temp
Cette commande exécute ADPlus silencieusement (aucune boîte de dialogue ne s'affiche et toutes les sorties sont enregistrées dans le journal des événements) en mode Crash et aboutit à l'attachement du débogueur CDB à Inetinfo.exe et à tous les processus Mtx.exe ou Dllhost.exe exécutés sur l'ordinateur. Le commutateur -notify étant utilisé, les débogueurs avertissent tous les utilisateurs ayant ouvert une session sur l'ordinateur nommé ordinateur distant chaque fois qu'un incident est détecté ou lorsque le processus surveillé se ferme. Puisque le commutateur -o est utilisé, ADPlus place tous les fichiers de sortie dans le dossier C:\Temp. Si le dossier n'existe pas, ADPlus le créé.

ADPlus -crash -iis -o \\serveur\partage
Cette commande est la même que la précédente, à cette différence qu'elle permet l'enregistrement de toutes les sorties sur un serveur réseau. ADPlus crée un sous-dossier dans \\serveur\partage et le nomme pour l'ordinateur local. En conséquence, si vous exécutez ADPlus dans une batterie de serveurs Web, chaque serveur de la batterie où ADPlus est exécuté enregistre son propre dossier unique sous \\serveur\partage. (Vous n'avez pas à créer de dossier unique pour chaque serveur. ADPlus le fait automatiquement.)
Remarque Si vous exécutez ADPlus en mode Crash à partir de la console locale (au lieu d'une interface de commande distante comme le décrit la section suivante), vous devez rester connecté à la console pendant toute la durée de la session de débogage.

Par exemple, supposons que vous démarrez ADPlus en mode Crash et que vous employez le commutateur -iis pour surveiller IIS. Lorsque vous fermez votre session sur la console, les copies de Cdb.exe qui y sont exécutées (et toutes les autres applications en cours d'exécution) se ferment. En conséquence, le débogage s'arrête et le processus surveillé prend fin.

Pour éviter ce problème, vous pouvez verrouiller la session de la console (appuyez sur CTRL+ALT+SUPPR, puis cliquez sur Verrouiller l'ordinateur) ou exécuter ADPlus à partir d'une interface de commande distante dont vous avez planifié l'exécution en mode non interactif (c'est-à-dire qui ne nécessite pas l'ouverture d'une session interactive).

Pour plus d'informations sur la façon de planifier une interface de commande distante en mode d'exécution non interactif, reportez-vous à la section "Scénarios caractéristiques d'utilisation de ADPlus : Exécution à distance en mode Crash".

Fermeture inattendue d'une application serveur MTS ou COM+

Les composants COM (Component Object Model) personnalisés qui s'exécutent dans une application serveur MTS ou COM+ fonctionnent en réalité dans un processus de substitution (Mtx.exe ou Dllhost.exe). Vous pouvez configurer les propriétés et paramètres de ces processus de substitution au moyen de l'explorateur MTS (pour Windows NT 4.0) ou du composant logiciel enfichable MMC (pour Windows 2000, Windows XP et Windows Server 2003).

Par défaut, les applications serveur MTS et COM+ sont configurées pour se fermer après trois minutes d'inactivité. Pour s'assurer que l'exécution de ces processus se poursuit tandis que le débogueur est attaché et surveille les exceptions, vous devez les configurer de façon à Ne pas arrêter l'exécution lors de l'inactivité.

En outre, MTS et COM+ implémentent un failfast. Un failfast est un dispositif de protection conçu pour faire échouer (ou fermer) des processus MTS/COM+ qui génèrent des violations d'accès non gérées.

Par défaut, le failfast est activé dans des applications MTS ou COM+ qui génèrent des exceptions de violations d'accès non gérées. En conséquence, une application serveur MTS/COM+ qui échoue ne peut pas générer d'exception de violation d'accès de deuxième chance (elle se ferme après la violation d'accès de première chance). Par défaut, ADPlus est configuré pour ne produire qu'un enregistrement d'image mémoire réduit en cas d'exception de première chance.

Pour déboguer correctement des applications serveur MTS/COM+, procédez comme suit :
  1. Configurez l'application serveur MTS/COM+ de façon à Ne pas arrêter l'exécution lors de l'inactivité.
  2. Utilisez le commutateur FullOnFirst pour créer un fichier d'image complète lorsque des exceptions de première chance surviennent.
  3. Exécutez ADPlus en mode Crash, puis attendez que l'application échoue.
Remarque Puisque MTS et COM+ ferment une application serveur et que la stratégie failfast empêche le processus de générer une exception de deuxième chance, vous pouvez n'obtenir qu'un fichier d'image mémoire d'une violation d'accès de première chance.

Exécution à distance en mode Crash

Il existe de nombreuses occasions où vous devez lancer ADPlus en mode Crash à partir d'un ordinateur client local pour surveiller un processus qui se ferme de façon inattendue sur un ou plusieurs serveurs distants d'une batterie de serveurs. Sous Windows 2000, vous utilisez généralement pour ce faire les services Terminal Server de Windows. Vous ne pouvez cependant pas déboguer des applications exécutées dans différentes stations Windows sous Windows NT 4.0 et Windows 2000. En conséquence, ADPlus désactive la fonctionnalité du mode Crash s'il détecte que celui-ci s'exécute dans une session des services Terminal Server. Pour résoudre ce problème, partagez le serveur distant en vous servant de l'utilitaire Remote.exe, créez un fichier de commandes par lot qui démarre une interface de commande sur le serveur distant, puis planifiez ce fichier de commandes par lot pour qu'il s'exécute sur le serveur cible à l'aide de la commande AT. (La commande AT provoque l'exécution de l'interface de commande en mode non interactif, semblable à un service.) L'interface de commande distante est ensuite connectée à une station de travail locale ou à un ordinateur client qui utilise le même utilitaire Remote.exe que celui que vous avez utilisé pour démarrer l'interface de commande.

Pour démarrer une interface de commande distante sur un serveur à l'aide de la commande AT, procédez comme suit :
  • Sur le serveur distant
    Nous supposons que les débogueurs sont installés dans le dossier C:\Debuggers. Procédez comme suit :
    1. Dans le dossier C:\Debuggers, créez un fichier de commandes par lot que vous nommerez Remoteshell.cmd.
    2. Ajoutez la ligne suivante à ce fichier de commandes par lot :
      c:\debuggers\remote.exe /s "cmd.exe" remoteshell
    3. Sur la console du serveur ou dans une session des services Terminal Server, ouvrez une nouvelle interface de commande, puis tapez la commande suivante :
      AT 15:00 c:\debuggers\remoteshell.cmd
      15:00 représente l'heure actuelle plus une minute. Par exemple, s'il est actuellement 14h59, tapez 15:00.
    4. Attentez que la commande AT s'exécute.
    5. À l'invite de commandes, tapez AT sans aucun paramètre pour vérifier que la tâche s'est exécutée sans erreurs.
  • Sur le client local
    Installez les débogueurs sur l'ordinateur client local ou (au minimum) copiez l'utilitaire Remote.exe en local. (Par défaut, l'utilitaire est installé avec les débogueurs dans le dossier racine de l'installation.)

    Nous supposons que les débogueurs et l'utilitaire Remote.exe sont installés dans le dossier C:\Debuggers. Procédez comme suit :
    1. À une invite de commandes, basculez vers le dossier C:\Debuggers.
    2. Tapez la commande suivante :
      remote.exe /c serveur_distant remoteshell
      serveur_distant désigne le nom du serveur distant.
    3. Votre interface de commande locale est maintenant connectée à l'interface de commande distante exécutée sur le serveur et toutes les commandes que vous tapez localement seront traitées sur le serveur distant (la commande DIR c:\ liste le contenu du lecteur C du serveur distant).
    4. Dans l'interface de commande distante, vous pouvez maintenant exécuter ADPlus en mode Crash comme vous le feriez localement à partir de la console. Vous devez cependant employer le commutateur -quiet pour supprimer toutes les boîtes de dialogue que ADPlus génère par défaut. Si vous n'utilisez pas le commutateur -quiet, l'interface de commande distante cessera de répondre après l'exécution de ADPlus et ne reviendra pas sur une invite. Si ce problème se présente, vous devez quitter l'interface de commande distante (Cmd.exe) sur le serveur, puis démarrer une nouvelle instance.
    5. Pour envoyer une interruption de débogage (CTRL+C) à un processus que ADPlus débogue actuellement à distance en mode Crash, vous devez employer l'utilitaire Breakin.exe. Par défaut, Breakin.exe est installé avec les débogueurs à la racine du dossier des débogueurs. Par exemple, pour interrompre le débogage de IIS (Inetinfo.exe) exécuté avec le PID 1975, tapez la commande suivante dans l'interface de commande distante.
      breakin.exe 1975
      Vous pouvez également employer la commande Kill.exe (qui se trouve à la racine du dossier des débogueurs) pour fermer tous les processus en cours de débogage.

Informations supplémentaires et problèmes connus

  • Comment savoir que ADPlus a capturé des informations concernant un incident ou qu'un processus surveillé en mode Crash s'est fermé ?

    Il existe plusieurs moyens d'y répondre :
    • Employez le commutateur -notify et vérifiez que le service de messagerie est démarré sur le serveur en cours de débogage et sur l'ordinateur client qui doit recevoir les notifications.
    • Dans un éditeur de texte, ouvrez le fichier .log qui apparaît dans le dossier de sortie pour chaque processus, puis faites défiler son contenu jusqu'à la fin du fichier. Recherchez le texte suivant :
           0:070> * -------- AutodumpPlus 4.01 finished running at: --------
           0:070> .time
           Debug session time: Mon Aug 06 15:25:15 2001
           System Uptime: 3 days 17:00:34 
           Process Uptime: 1 days 3:10:38 
           0:070> * -------------------------------------------------------
    • Dans le dossier de sortie, recherchez les fichiers .dmp qui contiennent la phrase "__2nd_chance". La présence de cette phrase dans l'intitulé d'un enregistrement d'image mémoire signale la fermeture inattendue d'un processus.
    • Dans le dossier de sortie, recherchez les fichiers .dmp qui contiennent la phrase "__Process_was_shutdown". La présence de cette phrase dans l'intitulé d'un enregistrement d'image mémoire signifie qu'un administrateur a fermé le processus ou, s'il s'agit d'une application MTS/COM+, que le système a fermé le processus parce qu'il a atteint la limite d'inactivité.
    • Dans le dossier de sortie, recherchez les fichiers .dmp qui contiennent la phrase "__CTRL-C". La présence de cette phrase dans l'intitulé d'un enregistrement d'image mémoire indique qu'une exception d'interruption de débogage a été levée à partir d'une DLL exécutée dans le processus ou que quelqu'un a appuyé sur CTRL+C à partir de la console (ou employé l'utilitaire Breakin.exe, si ADPlus est exécuté à distance) pour interrompre la session de débogage actuelle.
  • Vous devez installer les composants WSH (Windows Scripting Host) sur le système pour permettre l'exécution de ADPlus. Pour télécharger WSH, reportez-vous au site Web de Microsoft à l'adresse suivante (en anglais) :
    http://msdn2.microsoft.com/en-us/library/ms950396.aspx (http://msdn2.microsoft.com/en-us/library/ms950396.aspx)
    Remarque Les composants WSH (Windows Scripting Host) peuvent être déjà installés si l'un des produits Microsoft suivants est installé :
    • Microsoft Internet Explorer 5
    • Microsoft Office 2000
    • Microsoft Visual InterDev 6.0
    • Microsoft Visual Studio 6.0
    • Microsoft Windows NT Option Pack
    • Microsoft Windows 2000
    • Microsoft Windows XP
    • Microsoft Windows Server 2003
    • Microsoft Windows Vista
  • Le commutateur -iis ne fonctionne que si Internet Information Server (IIS) 4.0 ou Internet Information Services (IIS) 5.0.x est installé.
  • Lorsque vous exécutez ADPlus en mode silencieux, l'outil enregistre des informations dans le journal des événements.
  • Si vous employez le commutateur -o, le chemin spécifié ne doit pas contenir plus d'un fichier inexistant. Par exemple :
    1. Vous spécifiez -o c:\temp1\temp2. Cependant, les dossiers C:\Temp1 et \Temp2 n'existent pas.
    2. Le message d'erreur affiché par ADPlus vous indique que les dossiers n'existent pas et que ADPlus ne va pas les créer.
    En revanche, si vous spécifiez seulement -o c:\temp1, ADPlus crée le dossier C:\Temp1 s'il n'existe pas, puis y place tous les fichiers de sortie. Pour spécifier plusieurs sous-dossiers et utiliser le commutateur -o, vérifiez que tous les sous-dossiers existent avant d'exécuter ADPlus.
  • Dans COM+, vous pouvez configurer un module serveur de sorte qu'il démarre dans le débogueur. Ce paramétrage s'effectue sous l'onglet Avancé de la boîte de dialogue Propriétés du module. Si vous activez l'option Ouvrir dans le débogueur, ADPlus n'est pas en mesure d'attacher le débogueur CDG à un processus. Par défaut, un seul débogueur à la fois peut être attaché à un processus.
  • Lorsqu'un appel de procédure à distance (RPC) est effectué à partir d'un processus analysé par ADPlus en mode Crash vers un autre processus qui a été fermé (intentionnellement ou de façon inattendue), le fichier journal créé par ADPlus pour le processus analysé peut contenir l'une ou plusieurs des exceptions suivantes :
    Unknown exception - code 80010105 (first chance)
    Unknown exception - code 800706be (first chance)
    Unknown exception - code 800706ba (first chance)
    Ces exceptions sont typiques. Un RPC génère ces exceptions lorsqu'un appel est effectué à partir d'un processus surveillé vers un processus inexistant ou ayant échoué.

    En outre, si ADPlus surveille Inetinfo.exe dans le journal de débogage ADPlus associé à ce processus, l'exception suivante peut apparaître dans le journal :
    Unknown exception - code 800706bf (first chance)
    Cette exception apparaît généralement après un appel d'IIS vers un site Web hors processus (isolation élevée) défaillant. Il peut être suivi de deux instances de l'exception suivante :
    Unknown exception - code 800706ba (first chance)

Références

Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
323478  (http://support.microsoft.com/kb/323478/ ) Impossible d'effectuer un débogage au moyen d'une session Terminal Server

Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Internet Information Services 6.0
  • Microsoft Internet Information Services 5.1
  • Microsoft Internet Information Services 5.0
  • Microsoft Internet Information Server 4.0
  • Microsoft Internet Information Server 3.0
  • Microsoft Windows NT 4.0
  • Microsoft Windows 2000 Standard
  • Microsoft Windows XP Professional
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Windows Vista Entreprise
Mots-clés : 
kbhowto kbbug kbdebug KB286350
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.
 

Traductions disponibles