Tag dello stack
In Windows® analizzatore prestazioni (WPA), i tag dello stack sono una funzionalità che consente di creare etichette (tag) per identificare meglio quali parti dello stack di chiamate sono interessate.
Informazioni sulle differenze tra tag dello stack e tag dello stack frame
È possibile considerare stack (tag frame) e tag dello stack come due viste degli stessi dati disponibili nella colonna Stack . È possibile configurare una colonna dello stack da visualizzare come tag dello stack o colonna dello stack (tag frame) nell'editor di visualizzazioni.
Uno stack di chiamate è costituito da un elenco di frame. Se uno stack di chiamate è sotto forma di A -> B -> C, ci sono tre frame: A, B e C. Le colonne stack (tag frame) e ogni stack frame di chiamate viene mappata a un tag o per impostazione predefinita per il modulo.se non è presente alcun tag.
Ad esempio, lo stack di chiamate A - B ->> C-> D, nella visualizzazione Stack (tag frame) può diventare A -> FrameTagB -> FrameTagC -> D. Ogni tag di frame può avere una gerarchia basata sulla gerarchia di definizione dei tag nel file *.stacktags (ad esempio, il valore effettivo di FrameTagB può essere "HTML\Script\OM").
Un tag stack riepiloga un intero stack di chiamate usando un singolo nome di tag. Ad esempio, il tag frame più basso mappato viene in genere reso il tag dello stack a meno che non sia stata specificata la priorità per i tag. Usando lo stesso esempio A -> B -> C -> D, dove la visualizzazione tag frame è A -> FrameTagB - FrameTagC ->> D, la visualizzazione tag dello stack è semplicemente FrameTagC.
Oltre al tag normale per la corrispondenza esatta del modulo e del metodo, è anche possibile definire HintTag con HintOperator come chiamato o chiamante. Ad esempio, un hintTag con HintOperator come chiamato è definito per B. Lo stack di chiamate A - B ->> C -> D nella visualizzazione Stack (FrameTags) può diventare A -> FrameTagB - ModuleOfC ->> D e la relativa visualizzazione StackTagB è FrameTagB -> ModuleOfC. Il modulo di C viene creato in modo dinamico come nuovo tag dello stack. Se si imposta in modo esplicito l'attributo OnlyShowModule di HintTag come false, C viene impostato come nuovo tag stack anziché ModuleOfC. L'attributo OnlyShowModule è true per impostazione predefinita. Il caso d'uso tipico consiste nell'attribuire automaticamente le funzioni del server RPC. La loro funzione chiamante diretta è rpcrt4.dll! Invoke_epilog1_start. È possibile definire un HintTag per questa funzione chiamante comune per ottenere questo risultato.
Identificare il costo di una funzione comune definendo un tag hint
In genere, la colonna Stack Tag identifica il costo di una singola funzione in un singolo modulo. Tuttavia, WPA può consolidare il costo di tutte le funzioni chiamate da tale funzione se si definisce un tag hint e un operatore hint. Il tag hint è un'etichetta per la funzione comune e il gruppo di funzioni chiamate e l'operatore hint identifica la funzione comune come la funzione chiamante, il chiamante o la funzione chiamata, il chiamato.
Il caso d'uso tipico consiste nel definire un tag hint in modo che WPA attributi automaticamente le funzioni del server RPC. È anche possibile definire un tag hint, ad esempio per visualizzare i titolari di blocco o le funzioni che allocano gli heap.
Definizione dei tag dei suggerimenti
I tag degli hint e gli operatori hint sono definiti in XML nella sintassi seguente con gli attributi e i valori descritti nella tabella seguente.
<HintTag
Name="string-label"
Priority="integer"
HintOperator="caller-or-callee"
OnlyShowModule="Boolean">
<Entrypoint
Module="module-name"
Method="method-name">
</HintTag>
Elemento | Attributo | Descrizione |
---|---|---|
HintTag | Nome | Stringa da usare come etichetta |
Priorità | Integer. Il valore predefinito è zero. | |
HintOperator | Il valore è "Chiamante" o "chiamato" rispettivamente per la funzione chiamante o chiamata. | |
OnlyShowModule | Valore booleano, facoltativo. Il valore predefinito è true. | |
Entrypoint | Modulo | Nome del modulo che contiene Il metodo. |
Metodo | Nome del metodo che rappresenta il punto di ingresso. |
Per aggiungere i tag hint definiti in un file XML, usare la procedura descritta in Aggiunta di tag stack al file di definizione dei tag stack più avanti in questo argomento.
Esempio di uso di un tag hint
Si considerino i dati di esempio illustrati nella figura seguente.
In questo esempio sono presenti 4 funzioni RPC chiamate in WbemCore.dll:
- CWbemLevel1Login::NTLMLogin
- CWbemNamespace::GetObjectW
- CWbemNamespace::P utInstance
- CWbemNamespace::ExecMethod
La possibilità di consolidare il costo della chiamata di queste funzioni è utile per determinare il costo delle funzioni lato server RPC, perché WPA visualizza le spese totali come RPC nella colonna Stack Tag .
Con il rpcrt4.dll! Richiamare la funzione definita come punto di ingresso per il tag hint RPC e l'operatore hint specificato come chiamato, WPA rappresenta rpcrt4.dll! Richiamare con RPC e wbemcore.dll! CWbemLevel1Login::NTLMLogin con RPC\wbemcore.dll\CWbemLevel1Login::NTLMLogin. Quindi, nella colonna Stack Tag ,WPA visualizza il costo di wbemcore.dll! CWbemLevel1Login::NTLMLogin, funzione lato server RPC, come 31.855774ms. In WbemCore.dll NTLMLogin è la funzione RPC principale nella gerarchia delle funzioni chiamate.
Il tag hint RPC è definito dal codice XML seguente.
<HintTag Name="RPC" HintOperator="Callee">
<Entrypoint Module="rpcrt4.dll" Method="Invoke"/>
</HintTag>
Aggiunta di tag dello stack al file di definizione dei tag dello stack
Per aggiungere una definizione di tag dello stack al file Stack Tags Definition, eseguire le operazioni seguenti:
Scegliere Traccia dal menu, quindi selezionare Proprietà traccia. Verrà visualizzata la scheda Proprietà traccia .
Nell'area Definizione tag stack fare clic su Aggiungi alla posizione desiderata.
Passare all'area contenente il file di tag dello stack, selezionarlo e quindi fare clic su Apri.
Rimozione di un tag stack dal file di definizione dei tag dello stack
Per rimuovere una definizione di tag dello stack dal file Stack Tags Definition, eseguire le operazioni seguenti:
Scegliere Traccia dal menu, quindi selezionare Proprietà traccia. Verrà visualizzata la scheda Proprietà traccia .
Nell'area Definizione tag stack selezionare le definizioni di tag dello stack da rimuovere e quindi fare clic su Rimuovi.
Avviso Assicurarsi di voler rimuovere le definizioni di tag dello stack selezionate, perché non sarà possibile annullare dopo aver fatto clic su Rimuovi.
Ricaricamento del file di definizione dei tag dello stack
Per ricaricare una definizione di tag dello stack nel file Stack Tags Definition, eseguire le operazioni seguenti:
Scegliere Traccia dal menu, quindi selezionare Proprietà traccia. Verrà visualizzata la scheda Proprietà traccia .
Nell'area Definizione tag stack fare clic su Ricarica. È possibile caricare più tag dello stack premendo e tenendo premuto MAIUSC e facendo clic con il pulsante sinistro del mouse su ogni definizione di tag dello stack.
Risoluzione dei problemi del file di tag dello stack
Per analizzare i problemi all'interno del file di tag dello stack in WPA, eseguire le operazioni seguenti:
Nel menu fare clic su Finestra, quindi selezionare Console di diagnostica. La visualizzazione WPA si divide in due, con Graph Explorer e Analisi nella parte superiore dello schermo e la console di diagnostica nella parte inferiore dello schermo.
Mancia È anche possibile accedere alla console di diagnostica nell'angolo inferiore sinistro di WPA facendo clic su Console di diagnostica. Una volta aperto, è anche possibile trascinarlo in una finestra separata o ancorarlo nella parte superiore o laterale.
Nella console di diagnostica sono elencate informazioni sulle eccezioni che si verificano durante il flusso di lavoro di analisi. È possibile diagnosticare i problemi di decodifica dei simboli da questa console