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