Compartilhar via


TTD chama objetos

Descrição

Os objetos TTD Calls são usados para fornecer informações sobre chamadas de função que ocorrem ao longo de um rastreamento.

Parâmetros

Propriedade Descrição
Função! Nome do símbolo Um ou mais contidos entre aspas duplas, separados por vírgula. Por exemplo, dx @$cursession. TTD. Chamadas("módulo!símbolo1", "módulo!símbolo2", ...)

Propriedades

Propriedade Descrição
EventType O tipo do evento. Esta é a "Chamada" para todos os objetos de chamadas TTD.
ThreadId A ID do thread do sistema operacional do thread que fez a solicitação.
UniqueThreadId Uma ID exclusiva para o thread no rastreamento. As IDs de thread regulares podem ser reutilizadas durante o tempo de vida de um processo, mas UniqueThreadIds, não.
Função O nome simbólico da função.
EndereçoDaFunção O endereço da função na memória.
ReturnValue O valor retornado da função. Se a função tiver um tipo void, essa propriedade não estará presente.

Filhos

Objeto Descrição
Parâmetros Uma matriz que contém os parâmetros passados para a função. O número de elementos varia de acordo com a assinatura de tipo da função.
TimeStart Um objeto position que descreve a posição no início da chamada.
TimeEnd Um objeto position que descreve a posição no final da chamada.

Comentários

A depuração de viagem no tempo usa informações de símbolo fornecidas nos PDBs para determinar o número de parâmetros de uma função e seus tipos, o tipo de valor retornado e a convenção de chamada. Caso as informações do símbolo não estejam disponíveis ou os símbolos tenham sido restritos a informações públicas do símbolo, ainda é possível fazer consultas. O mecanismo de consulta de viagem no tempo fará algumas suposições neste cenário:

  • Há quatro parâmetros inteiros sem sinal de 64 bits para a função
  • O valor retornado é um inteiro sem sinal de 64 bits
  • O nome da função é definido como uma cadeia de caracteres fixa: "UnknownOrMissingSymbols"

Essas suposições permitem que consultas sejam feitas na ausência de informações de símbolo adequadas. No entanto, para obter melhores resultados, use símbolos PDB completos quando possível.

Observe que a função Calls faz computação e, dependendo do tamanho do rastreamento, pode demorar um pouco para ser executada. O uso da CPU aumentará durante a computação e observar o uso da CPU no gerenciador de tarefas dá uma indicação de que a computação está progredindo. Os resultados da consulta são armazenados em cache na memória para que as consultas subsequentes em chamadas consultadas anteriormente sejam significativamente mais rápidas.

Exemplo de uso

Este exemplo mostra o objeto calls para 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        

Confira também

Depuração de viagem no tempo - Introdução à Depuração de objetos de viagem no tempo

Depuração de viagem no tempo – Visão geral

dx (expressão para exibir modelo de objeto de depurador)