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 »SommaireRé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'informationsConfiguration requiseLa configuration minimale requise pour ADPlus est la suivante :
Nouvelles fonctionnalités de ADPlus version 6.0ADPlus 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 :
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 :
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 :
Quand ne devez-vous pas utiliser ADPlus ?N'utilisez pas ADPlus dans les situations suivantes :
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 :
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 :
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 chanceChaque 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 :
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 chanceSi 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 :
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 ADPlusPour 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).
Exécution de ADPlus pour la première foisPar 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. SyntaxeADPlus utilise la syntaxe suivante : ADPlus.vbs mode de fonctionnement processus à surveiller commutateurs facultatifs où mode de fonctionnement se remplace par le commutateur -hang ou -crashoù processus à surveiller se remplace par -iis, -pn processus.exe ou -p PID où commutateurs facultatifs se remplace par -notify, -o ou -quiet. Préparation du serveur pour un débogage en mode CrashAvant 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
Étapes de préparation d'un serveur Windows NT 4.0 pour le débogage en mode Crash
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 ADPlusCette 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'UCDans 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
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.
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. 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
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.
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. 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 :
Fermeture inattendue d'un processusDans 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 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.
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.) 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 :
Exécution à distance en mode CrashIl 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 :
Informations supplémentaires et problèmes connus
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):
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
|
Retour au début
