Объекты вызовов TTD
Description
Объекты вызовов TTD используются для предоставления сведений о вызовах функций, происходящих на протяжении трассировки.
Параметры
Свойство | Description |
---|---|
Функция! Имя символа | Один или несколько, содержащихся в двойных кавычках, разделенных запятой. Например, dx @$cursession. TTD. Вызовы("module!symbol1", "module!symbol2", ...) |
Свойства
Свойство | Description |
---|---|
EventType | Тип события. Это "Вызов" для всех объектов вызовов TTD. |
ThreadId | Идентификатор потока ОС, который сделал запрос. |
UniqueThreadId | Уникальный идентификатор потока в трассировке. Обычные идентификаторы потоков могут повторно использоваться в течение всего времени существования процесса, но UniqueThreadIds не может. |
Function | Символическое имя функции. |
FunctionAddress | Адрес функции в памяти. |
Возвращаемое значение | Возвращаемое значение функции. Если функция имеет тип void, это свойство не будет присутствовать. |
Children
Замечания
Отладка перемещения по времени использует сведения о символах, предоставленные в 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
См. также
Отладка временных путешествий — введение в объекты отладки временных путешествий