Теги стека
В Windows® Анализатор производительности (WPA) теги стека — это функция, которая позволяет создавать метки (теги), чтобы лучше определить, какие части стеков вызовов затронуты.
Общие сведения о различиях между тегами стека и тегами фрейма стека
Стек (теги фрейма) и теги стека можно рассматривать как два представления одних и того же данных, доступных в столбце Stack. Столбец стека можно настроить для просмотра в виде тега стека или столбца стека (тега кадра) в редакторе представлений.
Стек вызовов состоит из списка кадров. Если стек вызовов имеет вид A –> B –> C, то есть три кадра: A, B и C. Столбцы стека (теги кадров) сопоставляют каждый кадр стека вызовов с тегом или по умолчанию — с модулем.метод , если тег отсутствует.
Например, стек вызовов A -> B -> C-> D в представлении Стек (теги кадра) может стать A -> FrameTagB -> FrameTagC -> D. Каждый из тегов фрейма может иметь иерархию, основанную на иерархии определения тегов в файле *.stacktags (например, фактическое значение FrameTagB может быть "HTML\Script\OM").
Тег стека обобщает весь стек вызовов с использованием одного имени тега. Например, самый нижний тег кадра обычно делается тегом стека, если для тегов не указан приоритет. В том же примере A -> B -> C -> D, где представление тега кадра имеет значение A -> FrameTagB -> FrameTagC -> D, представление тега стека будет просто: FrameTagC.
Помимо обычного тега для точно соответствующего модуля и метода, вы также можете определить HintTag с HintOperator в качестве вызываемого или вызывающего. Например, hintTag с HintOperator в качестве вызываемого определяется для B. Стек вызовов A -> B -> C -> D в представлении Stack (FrameTags) может стать A -> FrameTagB -> ModuleOfC -> D, а представление StackTag — FrameTagB -> ModuleOfC. Модуль C динамически создается как новый тег стека. Явное задание атрибута OnlyShowModule элемента HintTag как false приведет к созданию C в качестве нового тега стека, а не ModuleOfC. Атрибут OnlyShowModule по умолчанию имеет значение true. Типичный вариант использования заключается в автоматическом атрибуте функций сервера RPC. Их функция прямого вызывающего абонента rpcrt4.dll! Invoke_epilog1_start. Для этого можно определить HintTag для этой общей вызывающей функции.
Определение стоимости общей функции путем определения тега подсказки
Как правило, столбец Тег стека определяет стоимость одной функции в одном модуле. Однако WPA может консолидировать стоимость всех функций, вызываемых этой функцией, если определить тег подсказки и оператор подсказки. Тег подсказки — это метка для общей функции и группы вызываемых ею функций, а оператор hint определяет общую функцию как вызывающую функцию, вызывающую функцию или вызываемую функцию, вызываемую функцию.
Типичным вариантом использования является определение тега подсказки, чтобы WPA автоматически атрибутов функций сервера RPC. Также может потребоваться определить тег подсказки, например, чтобы отобразить держатели блокировок или функции, которые выделяют кучу.
Определение тегов подсказки
Теги подсказок и операторы подсказок определяются в XML в следующем синтаксисе с атрибутами и значениями, описанными в следующей таблице.
<HintTag
Name="string-label"
Priority="integer"
HintOperator="caller-or-callee"
OnlyShowModule="Boolean">
<Entrypoint
Module="module-name"
Method="method-name">
</HintTag>
Элемент | attribute | Описание |
---|---|---|
HintTag | имя; | Строка, используемая в качестве метки |
Приоритет | Целое число. Значение по умолчанию равно нулю. | |
HintOperator | Значением является "Вызывающий" или "Вызываемый" для вызываемой или вызываемой функции соответственно. | |
OnlyShowModule | Логическое значение, необязательное. Значение по умолчанию — true. | |
Entrypoint | Модуль | Имя модуля, содержащего Метод. |
Метод | Имя метода, который является точкой входа. |
Чтобы добавить теги подсказок, определенные в XML-файле, используйте процедуру, описанную в разделе Добавление тегов стека в файл определения тегов стека далее в этом разделе.
Пример использования тега подсказки
Рассмотрим пример данных, показанных на следующем рисунке.
В этом примере существует 4 функции RPC, вызываемые в WbemCore.dll:
- CWbemLevel1Login::NTLMLogin
- CWbemNamespace::GetObjectW
- CWbemNamespace::P utInstance
- CWbemNamespace::ExecMethod
Возможность консолидировать затраты на вызов этих функций полезна для определения стоимости серверных функций RPC, так как WPA отображает общие расходы в виде RPC в столбце Тег стека .
С rpcrt4.dll! Функция invoke, определенная как точка входа для RPC тега указания, а оператор подсказки, указанный в качестве вызываемого объекта, WPA представляет rpcrt4.dll! Вызовите с помощью RPC и wbemcore.dll! CWbemLevel1Login::NTLMLogin с RPC\wbemcore.dll\CWbemLevel1Login::NTLMLogin. Таким образом, в столбце Тег стека WPA отображает стоимость wbemcore.dll! CWbemLevel1Login::NTLMLogin, серверная функция RPC, как 31,855774 мс. В WbemCore.dll NTLMLogin является верхней функцией RPC в иерархии вызываемых функций.
Тег указания RPC определяется следующим XML-кодом.
<HintTag Name="RPC" HintOperator="Callee">
<Entrypoint Module="rpcrt4.dll" Method="Invoke"/>
</HintTag>
Добавление тегов стека в файл определения тегов стека
Чтобы добавить определение тега стека в файл определения тегов стека, выполните следующие действия.
В меню выберите Трассировка, а затем свойства трассировки. Откроется вкладка Свойства трассировки .
В области Определение тегов стека щелкните Добавить в нужное расположение.
Перейдите в область, содержащую файл тегов стека, выберите его и нажмите кнопку Открыть.
Удаление тега стека из файла определения тегов стека
Чтобы удалить определение тега стека из файла определения тегов стека, выполните следующие действия.
В меню выберите Трассировка, а затем свойства трассировки. Откроется вкладка Свойства трассировки .
В области Определение тегов стека выберите определения тегов стека, которые нужно удалить, и нажмите кнопку Удалить.
Предупреждение Убедитесь, что вы хотите удалить выбранные определения тегов стека, так как вы не сможете отменить после нажатия кнопки Удалить.
Перезагрузка файла определения тегов стека
Чтобы перезагрузить определение тега стека в файл определения тегов стека, выполните следующие действия.
В меню выберите Трассировка, а затем свойства трассировки. Откроется вкладка Свойства трассировки .
В области Определение тегов стека щелкните Перезагрузить. Вы можете загрузить несколько тегов стека, нажав и удерживая клавишу SHIFT, а затем щелкнув определение тегов стека левой кнопкой мыши.
Устранение неполадок с файлом тегов стека
Чтобы изучить проблемы в файле тегов стека в WPA, сделайте следующее:
В меню щелкните Окно, а затем выберите Пункт Консоль диагностики. Дисплей WPA разделяется на две части: графовая Обозреватель и анализ в верхней части экрана и консоль диагностики в нижней части экрана.
Совет Вы также можете получить доступ к консоли диагностики в левом нижнем углу WPA, щелкнув Консоль диагностики. После открытия можно также перетащить его в отдельное окно или закрепить вверху или сбоку.
В консоли диагностики перечислены сведения об исключениях, возникающих во время рабочего процесса анализа. Из этой консоли можно диагностировать проблемы с декодированием символов.