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


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

Description

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

Параметры

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

Свойства

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

Children

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

Замечания

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

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

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

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

Пример использования

В этом примере показан объект вызовов для 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
        SystemTimeStart  : Friday, January 12, 2024 21:18:40.799
        SystemTimeEnd    : Friday, January 12, 2024 21:18:44.26        

См. также

Отладка временных путешествий — введение в объекты отладки временных путешествий

Отладка временных путешествий — обзор

dx (выражение объектной модели отладчика)