Поделиться через


Объекты вызовов TTD

Описание

Объекты вызовов TTD используются для предоставления сведений о вызовах функций, происходящих в ходе трассировки.

Параметры

Свойство Описание
Функции! Имя символа Один или несколько, содержащихся в двойных кавычках, разделенных запятой. Например, dx @$cursession. TTD. Calls("module!symbol1", "module!symbol2", ...)

Свойства

Свойство Описание
EventType Тип события. Это "Вызов" для всех объектов вызовов TTD.
ThreadId Идентификатор потока ОС потока, который сделал запрос.
UniqueThreadId Уникальный идентификатор потока в трассировке. Обычные идентификаторы потоков могут повторно использоваться в течение всего времени существования процесса, но UniqueThreadIds — нет.
Функция Символическое имя функции.
FunctionAddress Адрес функции в памяти.
Возвращаемое значение Возвращаемое значение функции. Если функция имеет тип void, это свойство не будет присутствовать.

Дети

Объект Описание
Параметры[] Массив, содержащий параметры, передаваемые в функцию. Количество элементов зависит от сигнатуры типа функции.
TimeStart Объект position, описывающий позицию в начале вызова.
TimeEnd Объект position, описывающий позицию в конце вызова.

Комментарии

Отладка перемещения по времени использует сведения о символах, предоставленные в PDB, для определения количества параметров для функции и их типов, типа возвращаемого значения и соглашения о вызовах. В случае, если сведения о символах недоступны или символы были ограничены общедоступными сведениями о символах, запросы по-прежнему можно выполнять. В этом сценарии подсистема запросов перемещения по времени сделает некоторые предположения:

  • Функция имеет четыре 64-разрядных целочисленных параметра без знака
  • Возвращаемое значение — 64-разрядное целое число без знака.
  • Для имени функции задается фиксированная строка: UnknownOrMissingSymbols.

Эти предположения позволяют выполнять запросы при отсутствии адекватной информации о символах. Однако для достижения наилучших результатов по возможности используйте полные символы PDB.

Обратите внимание, что функция Calls выполняет вычисления, и в зависимости от размера трассировки выполнение может занять некоторое время. Загрузка ЦП будет резко возрастать во время вычислений, и наблюдение за загрузкой ЦП в диспетчере задач показывает, что вычисление выполняется. Результаты запроса кэшируются в памяти, поэтому последующие запросы к ранее запрошенным вызовам выполняются значительно быстрее.

Example Usage (Пример использования)

В этом примере показан объект вызова для ucrtbase!initterm.

0:000> dx -r2 @$cursession.TTD.Calls("ucrtbase!initterm")
@$cursession.TTD.Calls("ucrtbase!initterm")
    [0x0]
        EventType        : Call
        ThreadId         : 0x2074
        UniqueThreadId   : 0x2
        TimeStart        : 1E:5D0
        TimeEnd          : 2D:E
        Function         : ucrtbase!_initterm
        FunctionAddress  : 0x7ffb345825d0
        ReturnAddress    : 0x7ff6a521677e
        Parameters

См. также:

Отладка перемещения по времени — общие сведения об объектах отладки перемещения по времени

Отладка по времени — обзор