Balises de pile
Dans Windows® Analyseur de performances (WPA), les balises de pile sont une fonctionnalité qui vous permet de créer des étiquettes (balises) pour vous aider à mieux identifier les parties de la ou des piles d’appels qui sont affectées.
Comprendre les différences entre les balises de pile et les balises de trame de pile
Vous pouvez considérer la pile (balises frame) et les balises de pile comme deux vues des mêmes données disponibles dans la colonne Pile . Vous pouvez configurer une colonne de pile à afficher en tant que balise de pile ou colonne de pile (balise frame) dans l’éditeur d’affichage.
Une pile d’appels se compose d’une liste de trames. Si une pile d’appels se présente sous la forme de A -> B -> C, il existe trois trames : A, B et C. Les colonnes de pile (balises de trame) mappent chaque trame de pile d’appels à une balise ou sont par défaut un module !si aucune balise n’est présente.
Par exemple, appeler la pile A -> B -> C-> D, en mode Pile (Balises de trame) peut devenir A -> FrameTagB -> FrameTagC -> D. Chacune des balises frame peut avoir une hiérarchie basée sur la hiérarchie de définition des balises dans le fichier *.stacktags (par exemple, la valeur réelle de FrameTagB peut être « HTML\Script\OM »).
Une balise de pile résume une pile d’appels entière à l’aide d’un nom de balise unique. Par exemple, la balise frame la plus mappée en bas est généralement la balise de pile, sauf si la priorité est spécifiée pour les balises. En utilisant le même exemple A -> B -> C -> D, où l’affichage de balise d’image est A -> FrameTagB -> FrameTagC -> D, la vue de balise de pile est simplement : FrameTagC.
Outre la balise normale pour la correspondance exacte du module et de la méthode, vous pouvez également définir HintTag avec HintOperator comme Appelé ou Appelant. Par exemple, un HintTag avec HintOperator comme Appelé est défini pour B. La pile d’appels A -> B -> C -> D dans la vue Pile (FrameTags) peut devenir A -> FrameTagB -> ModuleOfC -> D et sa vue StackTag est FrameTagB -> ModuleOfC. Le module de C est créé dynamiquement en tant que nouvelle balise de pile. Si vous définissez explicitement l’attribut OnlyShowModule de HintTag sur false, C est une nouvelle balise de pile plutôt que ModuleOfC. L’attribut OnlyShowModule a la valeur true par défaut. Le cas d’usage classique consiste à attribuer automatiquement des fonctions serveur RPC. Leur fonction d’appelant direct est rpcrt4.dll! Invoke_epilog1_start. Vous pouvez définir un HintTag pour cette fonction d’appelant courante afin d’y parvenir.
Identifier le coût d’une fonction commune en définissant une balise d’indicateur
Normalement, la colonne Stack Tag identifie le coût d’une fonction unique dans un seul module. Toutefois, WPA peut consolider le coût de toutes les fonctions appelées par cette fonction si vous définissez une balise d’indicateur et un opérateur d’indicateur. La balise hint est une étiquette pour la fonction commune et le groupe de fonctions qu’elle appelle, et l’opérateur hint identifie la fonction commune comme la fonction appelante, l’appelant ou la fonction appelée, l’appelé.
Le cas d’usage classique consiste à définir une balise d’indicateur afin que WPA attribue automatiquement des fonctions serveur RPC. Vous pouvez également définir une balise d’indicateur, par exemple, pour afficher les détenteurs de verrous ou les fonctions qui allouent des tas.
Définition de balises d’indicateur
Les balises d’indicateur et les opérateurs d’indicateur sont définis en XML dans la syntaxe suivante avec les attributs et les valeurs décrits dans le tableau suivant.
<HintTag
Name="string-label"
Priority="integer"
HintOperator="caller-or-callee"
OnlyShowModule="Boolean">
<Entrypoint
Module="module-name"
Method="method-name">
</HintTag>
Élément | Attribut | Description |
---|---|---|
HintTag | Nom | Chaîne à utiliser comme étiquette |
Priorité | Entier. La valeur par défaut est zéro. | |
HintOperator | La valeur est « Appelant » ou « Appelé » pour la fonction appelante ou appelée, respectivement. | |
OnlyShowModule | Boolean, facultatif. La valeur par défaut est true. | |
Point d’entrée | Module | Nom du module qui contient La méthode. |
Méthode | Nom de la méthode qui est le point d’entrée. |
Pour ajouter les balises d’indicateur que vous avez définies dans un fichier XML, utilisez la procédure décrite dans Ajout de balises de pile au fichier de définition des balises de pile, plus loin dans cette rubrique.
Exemple d’utilisation d’une balise d’indicateur
Considérez les exemples de données présentés dans la figure suivante.
Dans cet exemple, il existe 4 fonctions RPC appelées dans WbemCore.dll :
- CWbemLevel1Login::NTLMLogin
- CWbemNamespace::GetObjectW
- CWbemNamespace::P utInstance
- CWbemNamespace::ExecMethod
La possibilité de consolider le coût de l’appel de ces fonctions est utile pour déterminer le coût des fonctions côté serveur RPC, car WPA affiche la dépense totale sous la forme RPC dans la colonne Balise de pile.
Avec le rpcrt4.dll ! Fonction Invoke définie comme point d’entrée pour la balise d’indicateur RPC, et l’opérateur hint spécifié comme appelé, WPA représente rpcrt4.dll! Appelez avec RPC et wbemcore.dll ! CWbemLevel1Login::NTLMLogin avec RPC\wbemcore.dll\CWbemLevel1Login::NTLMLogin. Ainsi, dans la colonne Balise de pile, WPA affiche le coût de wbemcore.dll ! CWbemLevel1Login::NTLMLogin, la fonction côté serveur RPC, en tant que 31,855774ms. Dans WbemCore.dll, NTLMLogin est la fonction RPC supérieure dans la hiérarchie des fonctions appelées.
La balise d’indicateur RPC est définie par le code XML suivant.
<HintTag Name="RPC" HintOperator="Callee">
<Entrypoint Module="rpcrt4.dll" Method="Invoke"/>
</HintTag>
Ajout de balises de pile au fichier de définition des balises de pile
Pour ajouter une définition de balise de pile au fichier de définition d’étiquettes de pile, procédez comme suit :
Dans le menu, choisissez Trace, puis sélectionnez Propriétés de la trace. L’onglet Propriétés de la trace s’ouvre.
Dans la zone Définition des balises de pile, cliquez sur Ajouter à l’emplacement souhaité.
Accédez à la zone qui contient le fichier d’étiquettes de pile, sélectionnez-le, puis cliquez sur Ouvrir.
Suppression d’une balise de pile du fichier de définition des balises de pile
Pour supprimer une définition de balise de pile du fichier de définition d’étiquettes de pile, procédez comme suit :
Dans le menu, choisissez Trace, puis sélectionnez Propriétés de la trace. L’onglet Propriétés de la trace s’ouvre.
Dans la zone Définition des balises de pile, sélectionnez les définitions de balises de pile que vous souhaitez supprimer, puis cliquez sur Supprimer.
Avertissement Veillez à supprimer la ou les définitions de balise de pile sélectionnées, car vous n’aurez pas la possibilité d’annuler une fois que vous cliquez sur Supprimer.
Rechargement du fichier de définition des balises de pile
Pour recharger une définition de balise de pile dans le fichier de définition des balises de pile, procédez comme suit :
Dans le menu, choisissez Trace, puis sélectionnez Propriétés de la trace. L’onglet Propriétés de la trace s’ouvre.
Dans la zone Définition des balises de pile, cliquez sur Recharger. Vous pouvez charger plusieurs balises de pile en appuyant longuement sur la touche Maj et en cliquant avec le bouton gauche sur chaque définition de balises de pile.
Résolution des problèmes liés à votre fichier d’étiquettes de pile
Pour examiner les problèmes au sein de votre fichier d’étiquettes de pile dans WPA, procédez comme suit :
Dans le menu, cliquez sur Fenêtre, puis sélectionnez Console de diagnostic. L’affichage WPA se divise en deux : graph Explorer et Analyse dans la moitié supérieure de l’écran et la console de diagnostic dans la moitié inférieure de l’écran.
Pointe Vous pouvez également accéder à la console de diagnostic dans le coin inférieur gauche de WPA en cliquant sur Console de diagnostic. Une fois ouvert, vous pouvez également le faire glisser vers une fenêtre distincte ou l’ancrer en haut ou sur le côté.
La console de diagnostic répertorie des informations sur les exceptions qui se produisent pendant le flux de travail d’analyse. Vous pouvez diagnostiquer les problèmes de décodage de symboles à partir de cette console